想象一下以下提交:
commit 1
commit 2
commit 3
我的文件a,b
和c
。我添加文件d
,在接下来的3次提交中我修改它(我在heroku上测试一些JS)。我现在还有三个提交:
commit 4 ( this add the d file, the other 2 commits only modify it )
commit 5
commit 6
如何在保持推送提交4 5和6的同时将工作目录返回到commit 3
状态? (文件d
不应该存在于提交3中,或者我希望它至少显示为未跟踪)
答案 0 :(得分:1)
git reset <commit3>
其中<commit3>
是提交3(或HEAD^^^
)的SHA1,会将工作目录重置为提交3,同时保留d
未跟踪。
(但是,如果您要在一次提交中重新添加它,我建议您改为git rebase -i HEAD^^^
;然后您可以将三个最新提交压缩在一起。)
答案 1 :(得分:0)
在这里看看“探索历史”:
http://schacon.github.com/git/gittutorial.html
此外:
http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html
并使用git revert
或git reset
。
如果您只想检查先前提交中的内容,可以git checkout <commit>-<filename>
但是请阅读有关所有这些内容的手册页;)