代码之家  ›  专栏  ›  技术社区  ›  T. Propst

git提交的代码行消失

  •  1
  • T. Propst  · 技术社区  · 7 年前

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

    有时这很明显,比如当文件的一部分发生更改时,其他时候可能会更微妙。这看起来不是故意的,而且受影响的人似乎没有使用诸如rebase、commit AMIND、revert等可以提供简单解释的东西。自然地,消失的代码总是在新提交中未修改的旧代码。

    1 回复  |  直到 7 年前
        1
  •  -1
  •   JP Silvashy Gautam Rege    7 年前

    有时团队成员会 squash 它们准备合并时提交。在开发过程中,进行多次提交并拥有相当活跃的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 如果他们希望自己的队友这样做,有人会对此表示反对。