在工作中,我们已经开始注意到一些奇怪的git行为,我无法解释。有人会进行提交,稍后(通常在合并之后),提交中的一些代码行将被撤消。这不是整个提交,只能影响文件的一部分。它似乎也发生在正常的成功合并之后(即没有一个冲突得不到解决)。
有时候这很明显,比如文件的一部分发生变化,有时候会变得更加微妙。它看起来并不是故意的,并且似乎受影响的人不会使用像rebase,commit modify,revert等可以提供简单解释的东西。当然,消失的代码总是较旧的代码,在较新的提交中没有被修改。
在无冲突合并期间,还有其他任何方式可以被git覆盖先前提交的部分吗?
答案 0 :(得分:-1)
有时团队成员在准备合并时会squash
他们的提交。在开发过程中,进行许多提交并拥有非常活跃的git历史可能会有所帮助。
到了将您的分支机构合并为主人的时候(当然,您已经让同行审查了您的PR:wink :)您可能会选择将您的提交压缩成一个,这将使历史记录更易于管理对于一个大团队。
你可以通过检查你的git日志来做到这一点:
git log
然后选择要合并为一个的提交:
git rebase -i HEAD~4
根据每个提交加载EDITOR
的文档及其消息,请按照编辑器中的提示进行操作:
pick 01d1124 Adding license
pick 6340aaa Moving license into its own file
pick ebfd367 Jekyll has become self-aware.
pick 30e0ccb Changed the tagline in the binary, too.
# Rebase 60709da..30e0ccb onto 60709da
#
# Commands:
# p, pick = use commit
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
有些团队关注this particular workflow并且更喜欢他们的队友这样做,有反对意见。