签出旧的提交并使其成为新的提交
这个问题在这里已经有了答案:
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