Git命令提交项目代码

Git客户端安装

今天就结合`GitHub`,通过`Git`命令,来了解如何实现开源代码库以及版本控制

GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管所以我们需要下载一个Git客户端软件,用来执行各种指令

Git下载地址https://git-scm.com/

下载完毕后,配置`path`环境变量,`E:\develop\git\Git\bin`(我本机的在E盘下)

`doc`命令行窗口输入`git`命令,如果出现如下的信息,说明安装成功,

C:\Users\67334>git
usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

These are common Git commands used in various situations:

点击鼠标右键,菜单栏会出现 `Git GUI``Git Bash`GUI: Graphical User Interface(用户图形界面)Bash:是Windows下的命令行工具

版本存储仓库:

公共:
	- github 
	- 码云
自己搭建:
	- gitlab 

Git命

接下来我用`git`命令,来一步步实现GitHub发布项目,版本控制的功能

1、首先在电脑上创建一个空文件夹,我为这个空文件夹起名叫demo,然后进入该文件夹首先在GIT终端执行,`git init` 指令,会在demo文件夹生成`.git`文件夹

2、在demo文件夹内创建一个a.txt文件,然后通过`git status` 查看,该指令作用是 列出修改过的(绿色标识)、新创建的(红色标识)、已经暂存但未提交的文件(白色标识)

3、然后通过`git add 某文件(git add . 添加全部)`添加刚才我们新建的a.txt文件

4、然后通过`git commit -m "备注信息"`,提交本次内容

以上4步的操作效果截图如下:




5、我们利用上述指令,在往demo文件夹中添加一个b.txt文件,然后通过`git log`查看我们的操作记录,然后可以查询到我们添加a.txt和b.txt的log日志,然后通过`git reset --hard b96f962d0f835e3114b6f51bf7c9bfe6125626e3`,去回退到我们的操作节点,此时我回退到第一次添加文件节点,也就是demo文件夹只有一个a.txt文件,以下是git端的效果截图



6、此时查看`git log` 结果发现只有一条操作记录,也就是我们添加的a.txt的记录,我们之前进行的第二步操作呢?也就是添加的b.txt文件节点时,我们如何回退到最后这个节点呢?我们可以利用`git reflog`


7、此刻demo文件夹中的2个文件内容,a.txt文本如下:

初始化内容

b.txt文本内容如下:

这是b文本内容

我们继续为b.txt添加如下记录信息

我们临时为b添加记录

此刻b.txt文件内容如下:

这是b文本内容
我们临时为b添加记录

上述意思就是在更新`b.txt`文件内容,添加操作记录如果用到开发场景,我们在**需求1**,然而由于工作需要,**需求1**需要暂且搁置,我们需要做**需求2****需求1**代码需要砍掉,等我们做完**需求2**,我们继续需要获取我们之前**需求1**的代码,我们可以利用`git stash`命令,以下是该命令的含义

git stash             将当前工作区所有修改过的内容存储到“某个地方”,将工作区还原到当前版本未修改过的状态
				git stash list        查看“某个地方”存储的所有记录
				git stash clear     清空“某个地方”
				git stash pop       将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
				git stash apply     编号, 将指定编号记录从“某个地方”重新拿到工作区(可能有冲突) 
				git stash drop      编号,删除指定编号的记录

这次会有冲突,我们需要解决冲突,即可


8、我们可以通过`git branch` 查看我们的项目所有分支,默认只有一个`master`主分支,我们可以通过`git branch dev`(dev是我们起的分支名)新建一个分支,名字是dev开发分支,然后通过`git checkout dev`切换到我们新建的dev分支,我们也可以通过`git checkout -b 分支名`一并实现创建、切换分支的功能

9、我们切换到`dev`分支,通过`touch 文件名`创建一个文件,然后add、commit ,意思就是在dev分支上做一些修改,并保存在dev分支上,然后在切回master分支,我们要做的就是将dev上更新的内容,也在master上做同样的修改,我们可以用`git merge` 分支名,将dev上的更新内容,合并到master上另外删除分支使用`git branch -d 分支名`

10、利用`github`创建项目,会出现如下指令,需要在git终端输入创建生成项目,要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]:

通过`git remote add origin 和https://github.com/iyongfei/test.git`




11、接下来我们通过`git clone https://github.com/iyongfei/test.git``clone`下载我们的`github`项目,我们默认拉取的是`master`分支(默认分支可以在**github**设置其他分支)

然后根据以前的git指令,进行`git add .``git commit -m "备注信息"`

注意注意,由于项目开发都是协同开发,我们在接下来在提交代码之前,需要`git pull origin 分支`,拉取对应分支代码,然后如果有冲突解决冲突,然后在`git push origin 分支名`

ps:我如下的截图在提交代码时,为了简化操作,没有`git pull` 



12、我们还可以往`github`项目上添加新分支,我们通过`git branch 分支`创建分支,通过`git checkout 分支`切换分支,(或者通过`git checkout -b 分支`,创建并切换分支),然后在添加、提交(我这里没有添加任何信息),最后`git push origin dev` 往github项目上添加新分支


13、我们还可以拉取其他分支的内容到本分支,比如我在`master`上添加内容,然后我在`dev`分支上去拉取`master`上的代码,然后在提交到对应的github分支`dev`上(我本地依然没有添加额外的内容)


14、冲突如何产生?我们如何解决冲突?当自己拉取了`dev`的代码,同事也拉取了`dev`的代码,同事先于我提交代码,然后自己也在本地修改了代码,如果修改了同一个文件,会出现冲突情况,再次拉取`dev`代码会失败,而且提交失败



解决方式一:先在自己本地`dev`,通过`git stash`暂存修改,然后`git pull 分支`代码,再然后`git stash pop` 合并代,解决冲突(删掉我们不需要的代码),然后在提交代码

<<<<<<< Updated upstream
aa为各个
bb额外分
=======
aac
bbd
>>>>>>> Stashed changes

解决方式二:不利用`git stash`,利用`compare`对比软件,将有冲突的文件,剪切出来,然后拉取`dev`分支代码,就把github的`dev`分支最新代码,同步下来,然后在跟自己的剪切出来的代码段,进行对比,将自己的代码更新到同步下来的代码,然后在提交到github对应的分枝上




########################以下是项目中的截图########################

1、首先进入项目的主分支

2、Fork一份工程,当做自己的项目管理分支



3、在电脑上创建一个文件夹,先Clone一份自己工程的项目分支(xxx屏蔽公司信息)

git clone git@xxxx.gitlab.com:xxxxxx/SELand_Vertu

4、进入项目的二级目录进入git客户端,确认要pull分支

      git branch看看当前的分支

      git checkout -b develop  切换到develop分支,因为我要pull拉去develop分支上的项目

5、然后在将自己的项目分支同步项目主分支(我们项目分支为develop分支)

git pull git@xxx.gitlab.com:xxx/SELand_Vertu develop

6、每次提交代码时候,需要先同步项目主分支代码

git status是哪些文件有所修改

git diff 可以查询所修改的代码

git add -A 增加自己所做的修改

git commit -a 提交所有修改的代码

git push origin develop 提交代码



7、最后在new merge request,提交给相应的负责人,进行merge代码



错误解决::::

如果某个同事提交代码,老大没有及时merge代码,自己也提交该文件的代码,那么老大merge代码会有冲突

会差生如下的错误提示:

Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.

可以这样修改

1、git pull git@xxx.gitlab.com:xxx/SELand_Vertu develop先同步一下会出现以上的错误

2、pull会使用git merge导致冲突,需要将冲突的文件resolve掉 git add -u,

3、在项目中看看哪些代码是对方改的,哪些代码是自己修改的,在合并成一份最新的代码

4、git commit之后才能成功



©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页