【GIT】常见使用GIT的出现的问题 - 进阶篇

前言

本章主要介绍实际多人开发情况下, 会遇到的那些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】常见使用GIT的出现的问题 - 进阶篇_第1张图片

未推送至远端, 使用 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 中文手册

你可能感兴趣的:(【GIT】常见使用GIT的出现的问题 - 进阶篇)