实习必备之Git分支操作

144 阅读2分钟

4. Git 分支操作

「这是我参与2022首次更文挑战的第29天,活动详情查看:2022首次更文挑战」。

首先来看下公司的开发模式:从右向左看,三个笑脸代表三个开发人员和三条分支。

image-20220222161359011

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独

分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时

候,不会影响主线分支的运行。

image-20220222162605256

4.1 分支的操作:

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

基本流程先走一边:首先创建一个分支:hot-fix

git branch hot-fix

查看当前分支:

$ git branch -v
  hot-fix a775e7d 添加到本地库
* master  a775e7d 添加到本地库

切换到hot-fix分支上,然后修改文件,并进行add\commit操作:

git checkout hot-fix
xbhog@xbhogComputer MINGW64 /d/FileStorage/git-space/GitOperate (hot-fix)
$ git status
On branch hot-fix
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   test.txt
​
no changes added to commit (use "git add" and/or "git commit -a")
​
xbhog@xbhogComputer MINGW64 /d/FileStorage/git-space/GitOperate (hot-fix)
$ git add test.txt 
​
xbhog@xbhogComputer MINGW64 /d/FileStorage/git-space/GitOperate (hot-fix)
$ git commit -m "hot-fix first commit"
[hot-fix 80d91c5] hot-fix first commit
 1 file changed, 3 insertions(+)
​
xbhog@xbhogComputer MINGW64 /d/FileStorage/git-space/GitOperate (hot-fix)
$ cat test.txt 
​
hello Git
11111
1111
22222

然后我们看下reflog:

git reflog
80d91c5 (HEAD -> hot-fix) HEAD@{0}: commit: hot-fix first commit
b5f1c9a HEAD@{3}: commit: 修改本地库
ee8607e HEAD@{6}: commit: 全部提交到本地库
a775e7d (master) HEAD@{7}: commit (initial): 添加到本地库

4.2 分支合并:

先来看下主分支中的内容,

xbhog@xbhogComputer MINGW64 /d/FileStorage/git-space/GitOperate (hot-fix)
$ git checkout master 
Switched to branch 'master'
​
xbhog@xbhogComputer MINGW64 /d/FileStorage/git-space/GitOperate (master)
$ cat test.txt 
​
hello Git

我们将hot-fix分支中的内容添加到主分支上;注意需要在master分支上操作hot-fix分支。

xbhog@xbhogComputer MINGW64 /d/FileStorage/git-space/GitOperate (master)
$ git merge hot-fix 
Updating a775e7d..80d91c5
Fast-forward
 test.txt | 3 +++
 1 file changed, 3 insertions(+)
​
xbhog@xbhogComputer MINGW64 /d/FileStorage/git-space/GitOperate (master)
$ cat test.txt 
​
hello Git
11111
1111
22222

4.3 分支合并冲突:

出现其问题主要是两个分支对同一个文件进行了修改,合并的时候git不知道应该遵循哪个分支,解决方式是手动合并。

需要注意的一点是:网上文章说是:两个分支在同一个文件的同一个位置有两套完全不同的修改,但是我实际测试下来,其实只要对同一个文件进行修改就会发生冲突。

接下来我们复现一下这个问题:

master分支:

image-20220227120012020

hot-fix分支:

image-20220227120121268

然后对两个分支中的同一个test文件进行操作:

首先对hot_fix分支的文件进行修改,然后add、commit操作完成后切换到master分支下:

image-20220227120448172

还是相同的操作:image-20220227120637384

接下我们在master分支下合并hot-fix分支中的内容:

image-20220227120748982

可以看到git拒绝了我们的操作,并且模式变为合并中:

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix

解决方法:我们需要查看文件中的内容,将没必要的信息删除,然后进行add、commit操作。

image-20220227121120444

可以看到操作完成后,模式变为master.

注意点:

执行提交(注意:此时使用 git commit 命令时不能带文件名