GIT定制的代码线消失了



在工作中,我们开始注意到一些我无法解释的奇怪的git行为。有人会提交犯罪,然后(通常是在合并之后),提交中的某些代码行将被撤销。这不是整个提交,并且可能仅影响文件的一部分。在正常的成功合并之后,似乎也发生了(即没有解决的冲突很差)。

有时这是显而易见的,例如,当文件的一部分更改时,其他时候它可能会更加微妙。它看起来并不是故意的,并且似乎没有受到影响的人使用诸如折叠,犯下修正,恢复等的事物,可以提供简单的解释。自然,消失的代码总是是较旧的代码,在较新的提交中未修改。

在无冲突合并期间,git可以用其他方式被以前的提交的部分覆盖?

有时团队成员在准备合并时会 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.
#

一些团队遵循此特定的工作流程,更喜欢队友这样做,有反对这一点的争论。

最新更新