【发布时间】:2023-03-21 02:01:01
【问题描述】:
故事:在一个项目的中间,我的同事从 master 创建了一个新分支,并开始进行繁重的重构工作。我从 master 创建了我的分支,并开始在页面上做新的事情。我们定期提交,但只有我可以将代码 rebase 到 master(因为同事更改太重,还不能从 master 部署)。不幸的是,我们的一些工作依赖于相同的文件。因此,经过几天的工作,当她最终想将她的更改重新设置为 master 时,她遇到了很多 git 冲突。
my_branch #---#----#-#-------#----#--#-----#---#----#----#
/ \ \ \ \ \ \
master *-------*--------------*---*---*--------------*----*----*
\ /
her branch #------#-------#-----------#-----------#------------#
问题一是:当我们处理相同的文件时,如何防止大量的 git 冲突? (或者在这种情况下最好的做法是什么?)
但这不是我们问题的结束,...绝对正确,她尝试从 master 到她的分支进行变基(我提交了更改),所以提交映射应该是这样的
my_branch #---#----#-#-------#----#--#-----#---#----#----#
/ \ \ \ \ \ \
master *-------*--------------*---*---*--------------*----*----*
\ \ \ /
her branch #------#-------#----*------#-----*-----#------------#
这就是困扰我们的地方。在这些变基期间,她正在解决这些冲突。但是 git 不记得她对冲突修复的决定,所以当她从 master 到 her-branch 进行另一个 git rebase 时,她必须修复相同的 git 冲突再次她在以前的变基中修复。
问题 2 是:如何告诉 git 在 master 分支的 git rebase 之后记住 git conflict fix,所以在下一次 rebase 之后我们不必修复相同的问题又冲突了?
【问题讨论】:
-
哦,我忘了,我的git版本:1.7.4.1,她应该是一样的
-
我想问的确切问题!
-
再更新一次 - 过去几年我只使用
git merge而不是git rebase。是的,有些人说使用merge您没有正确的历史记录,这是不正确的。观看 youtube.com/watch?v=1ffBJ4sVUb4 以了解 git 中的一切是如何工作的(+rebase实际上可能具有破坏性)我的观点是git merge更有效率。我想这就是为什么 github 在处理拉取请求时也在他们的 Web 界面中使用merge的原因 -
@equivalent8 虽然它会让你的分支历史变得一团糟,但我更喜欢变基,因为它为我工作的功能分支创建了一个干净的 git 历史。 Git 合并非常适合拉取请求,因为它可以直观地表示拉取请求何时合并到主请求中。
-
@D.Foley 我完全同意,它更干净。对于超小型项目和我独自工作的项目,我也使用 rebase。但是对于有很多开发人员频繁提交的项目来说,使用
merge更为务实,否则每个人 10% 的时间将只是解决 rebase 冲突
标签: git rebase git-rebase git-merge-conflict