前言
本章主要介绍实际多人开发情况下, 会遇到的那些GIT合并冲突, 代码回滚,提交压缩等等情况
正文
- git merge --ff, git merge --no-ff, git merge --squash 区别
- git merge 多个分支后, 如何撤回其中一个分支
git merge --ff, git merge --no-ff, git merge --squash
git merge --ff, fast-forword
合并, 将合并分支快速合并到当前分支,当前分支的指针向前进。
当前分支情况
A---B---C topic
/
D-- master
git merge topic
D---A---B---C master
git merge --no-ff topic
A---B---C topic
/ \
D-----------E master
git merge --squash topic
将分支的提交修改的文件移至暂存区
git merge --abort
执行合并时, 出现冲突文件, 执行操作退回未合并的状态
git merge --continue
执行合并时, 出现冲突文件, 修改冲突文件, 并且执行git add
, 则继续合并
git merge feature-a feature-b
快速合并两个分支,同时非快速合并当前分支
git merge --no-commit feature-a
合并feature-a分支,但不产生一个commit 提交
git merge 多个分支后, 如何撤回其中一个分支
如下图所示, 在master分支上分别创建了feature-a
, feature-b
两个分支, 最终都合并在master分支上。
未推送至远端, 使用 git reset
撤回feature-a的合并
可以使用
git reset --hard C1
git merge --no-ff feature-2
推送至远端, 使用 git revert
撤回feature-a的合并, 保留feature-b修改
git revert -n C3 -m1
# 去除HEAD部分的修改
git add .
git revert --continue
# 因为master已经合并过了feature-b, 但因为回退到了最早的版本,feature-b修改的内容不存在了,但又无法进行 merge feature-b, 那么 如何再次合并feature-b?
# 办法是revert merge feature-b的分支
git revert -n C5 -m 2
# 去掉HEAD的部分
git add .
git revert --continue
小结
本文不定期更新, git
是一个优秀的版本控制工具, 熟练使用git操作
对于团队维护有非常大的好处.
参考文章
- git 中文手册