内容纲要

分支操作

在前一章git操作,Git的提交会形成一条时间线,回退版本时,会使用HEAD指向的commit id来进行操作。实际上HEAD指向的不是commit id而是指向了master分支也就是主分支,由master分支指向了提交版本。

每次提交master的时间线就越长,当我们由于项目进度需要不影响他人的工作进度时,就需要重新创建一个分支,此刻的时间线就像多个个支流和主干河流一样,在各自完成时进行提交合并就可以了。

git分支

创建分支

合并分支

创建分支

使用如下命令进行创建分支

git branch <分支名>

或者使用如下命令进行创建并切换到分支

git checkout -b <分支名>

或者如下命令进行创建并切换到分支

git switch -c <分支名>

查看分支

使用如下命令进行查看分支,并且当前分支前面会有*****来标识

git branch

切换分支

git switch <分支名>

或者如下命令,效果同上

git checkout <分支名>

合并分支

就是将master分支直接指向指定分支

git merge <分支名>

这样默认使用Fast forward模式,合并分支后会丢掉分支的信息,可以通过如下命令禁用生成一个新的提交并保留分支的信息。

git merge --no-ff -m "描述信息" dev

不使用Fast forward

删除分支

git branch -d <分支名>

丢弃一个没有被合并过的分支,可以通过如下命令强行删除

git branch -D <分支名>

解决冲突

我们先查看原本demo.txt中的文本

Qsky8@Nebula MINGW64 /d/Users/Qsky8/Desktop/git (master)
$ tail demo.txt
nihao

此时我们使用master分支进行修改添加master add,并且提交。切换到dev_zhao分支查看发现文本与原始文本相同,并且添加dev_zhao add,进行提交。此时进行合并,提示发生了冲突如下所示:

Qsky8@Nebula MINGW64 /d/Users/Qsky8/Desktop/git (master)
$ git merge dev_zhao
Auto-merging demo.txt
CONFLICT (content): Merge conflict in demo.txt
Automatic merge failed; fix conflicts and then commit the result.

Qsky8@Nebula MINGW64 /d/Users/Qsky8/Desktop/git (master|MERGING)
$ tail demo.txt
nihao
<<<<<<< HEAD
master add
=======
dev_zhao add
>>>>>>> dev_zhao

此时,发生冲突需要手动解决冲突,并且重新进行提交,如下图所示:

解决冲突

查看分支合并图示

git log --graph --pretty=oneline --abbrev-commit

结果如下:

Qsky8@Nebula MINGW64 /d/Users/Qsky8/Desktop/git (master)
$ git log --graph --pretty=oneline --abbrev-commit
*   1fa1caf (HEAD -> master) solve the problem
|\
| * 55ddef9 (dev_zhao) dev_zhao add
* | 34b398b master add
|/
* b172824 (gitee/master) dev modif something
* 7fa195b add .gitignore
* 501ed7f (github/master) Create README.md
* e28612d add demo.txt
* 2aff731 first modif
* 163d96d third modif
* c1f49da second modif

保护现场

使用如下命令保护工作区进度

git stash

查看保存的工作区记录

git stash list

恢复工作区

恢复后,stash内容并不删除,需要删除工作区记录

git stash apply

恢复后,stash内容删删除

git stash pop

删除工作区记录

git stash drop

复制分支的修改到当前分支

不会全部复制,只会复制分支的改动

git cherry-pick <commit id>
最后修改日期:2020年7月26日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。