签出旧的提交并使其成为新的提交

这个问题在这里已经有了答案:

  • 如何将Git存储库恢复到以前的提交? 38个答案

  • git rm -r .
    git checkout HEAD~3 .
    git commit
    

    提交后,新HEAD文件将与修订HEAD~3中的文件相同。


    这听起来像你只是想重置为C; 那就是树:

    ABC

    你可以通过reset来做到这一点:

    git reset --hard HEAD~3
    

    (注意:你之前说过三次提交,所以这就是我写的内容;在你的例子中C只有两次提交之前,所以你可能想使用HEAD~2


    你也可以使用revert如果你想,但据我所知,你需要做一次恢复:

    git revert HEAD     # Reverts E
    git revert HEAD~2   # Reverts D
    

    这将创建一个是为C.可以在同一内容的新提交的f是相同的内容d,和G rebase ,如果你想壁球那些一起


    这正是我想要做的。 我不知道以前的命令git cherry-pick C ,这听起来不错,但你似乎这样做是为了从另一个分支获得更改,但不是在同一分支上,有人尝试过吗?

    所以我做了一些其他的工作:我通过文件获得了旧的提交文件所需的文件

    git checkout <commit-hash> <filename>
    

    例如: git checkout 08a6497b76ad098a5f7eda3e4ec89e8032a4da51 file.css

    - >这将从旧提交中获取文件

    然后我做了我的改变。 我又犯了一次。

    git status (to check which files were modified)
    git diff (to check the changes you made)
    git add .
    git commit -m "my message"
    

    我用git log检查了我的历史git log ,并且我还git log我的历史以及从旧文件所做的新更改。 我也可以推。

    请注意,要回到您想要的状态,您需要在不需要的更改之前放置提交的哈希值。 在做这件事之前,请确保您没有未提交的更改。

    链接地址: http://www.djcxy.com/p/409.html

    上一篇: Checkout old commit and make it a new commit

    下一篇: Why does git revert complain about a missing