【问题标题】:git: getting rid of previous commit so that you can amend the one beforegit:摆脱以前的提交,以便您可以修改之前的提交
【发布时间】:2011-09-28 21:52:20
【问题描述】:

发生了什么: 改变1, git提交, git推送, 改变2, git提交

应该发生的事情: 改变1, git提交, git推送, 改变2, git commit --amend

我保留 change2 并不重要,但重要的是我能够修改原始提交。我该怎么做?

【问题讨论】:

    标签: git git-amend


    【解决方案1】:

    既然你已经推送了,请注意这很棘手,你正在改写历史。

    您可以在第一次提交之前git rebase -i 并选择edit 作为呈现给您的文本中的提交。这样,您将被带到您更改/修改的第一个提交状态,然后 git 将对其应用下一个提交。

    或者您可以git reset --soft first 去第一次提交并与change2一起修改它。

    git reset --hard first 转到第一个提交并在没有更改的情况下对其进行修改2

    【讨论】:

      【解决方案2】:

      [我假设你知道 Linus 认为这是邪恶的]

      $ git reset --hard HEAD^  # remove last commit
      $ git commit --amend
      $ git push --force <remote> <branch>
      

      如果你想在之后应用最后一次提交,那么就这样做

      $ SHA1=`git rev-parse master`
      $ git branch temp
      # now the three commands above
      $ git cherry-pick $SHA1
      $ git branch -d temp
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-14
        • 2022-07-21
        • 1970-01-01
        • 1970-01-01
        • 2017-07-20
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多