【问题标题】:How to do a git commit without the log is being recorded如何在没有记录日志的情况下进行 git commit
【发布时间】:2014-03-04 17:16:32
【问题描述】:

场景解释:我已经完成了我的功能并推送到某个 git 分支并将提交版本共享给我的项目经理。后来,我意识到我错过了一个功能,我想将它推送到同一个分支而不记录任何提交。新推送的提交应该附加到最后一次提交,并使用我共享给我的项目经理的相同提交版本.

【问题讨论】:

    标签: git github git-commit


    【解决方案1】:

    这是不可能的。

    提交哈希取决于几个因素:

    • 提交时间
    • 引入的更改
    • 父提交
    • ...

    有关更多信息,请参阅此问题:How does git compute file hashes?

    所以,如果你引入一个新的提交,你将总是收到一个新的哈希。

    既然您已经推送了提交,请创建一个新的提交,输入适当的提交消息并同时推送此提交。

    是的,您将不得不告诉您的项目经理再次获取,但是修改提交有什么问题?

    如果你还没有推送你的提交,你想这样做

    git commit --amend
    

    但这也会导致不同的提交哈希。

    【讨论】:

      【解决方案2】:

      就像埃克斯说的,这是不可能的。

      有几种解决方法,具体取决于您的需要。

      1) 如果它足够快并且还没有其他人提交,您可以用 git reset --hard 覆盖树并“避免分支通过该特定提交”。当您在代码上有一些不应该被其他人看到的东西时,这很好。

      git reset --hard hashLastValidCommit
      git add files
      git commit -m"xxxx"
      git push -f
      

      注意:提交仍然存在,但它不再在任何分支中,并且很难在没有哈希的情况下捕捉到。

      2) 你也可以做一个 rebase 并将这些提交(新的和不完整的)合并为一个。这比上一步更有效率。

      3) 如果您还没有推送提交,那完全是另一个主题。只需进行修改或重置,但无论如何哈希都会改变。

      这是一篇关于如何创建哈希的有趣文章,这将为您提供更好的视角并让您走上正轨。

      http://alblue.bandlem.com/2011/08/git-tip-of-week-objects.html

      【讨论】:

        【解决方案3】:

        试试

        git commit --amend --no-edit.
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-04-16
          • 2012-07-24
          • 1970-01-01
          • 1970-01-01
          • 2020-03-22
          • 2023-03-15
          相关资源
          最近更新 更多