git提交的代码行消失了

时间:2017-09-01 01:35:46

标签: git git-merge

在工作中,我们已经开始注意到一些奇怪的git行为,我无法解释。有人会进行提交,稍后(通常在合并之后),提交中的一些代码行将被撤消。这不是整个提交,只能影响文件的一部分。它似乎也发生在正常的成功合并之后(即没有一个冲突得不到解决)。

有时候这很明显,比如文件的一部分发生变化,有时候会变得更加微妙。它看起来并不是故意的,并且似乎受影响的人不会使用像rebase,commit modify,revert等可以提供简单解释的东西。当然,消失的代码总是较旧的代码,在较新的提交中没有被修改。

在无冲突合并期间,还有其他任何方式可以被git覆盖先前提交的部分吗?

1 个答案:

答案 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并且更喜欢他们的队友这样做,有反对意见。