1

想象一下以下提交:

commit 1
commit 2
commit 3

我在其中有文件a,bc. 我添加了文件d,并在接下来的 3 次提交中对其进行了修改(我正在 heroku 上测试一些 JS)。我现在还有三个提交:

commit 4 ( this add the d file, the other 2 commits only modify it )
commit 5
commit 6

如何commit 3在保持推送的提交 4 5 和 6 的同时将工作目录返回到状态?(该文件d在提交 3 时不应该存在,或者我希望它至少显示为未跟踪)

4

2 回答 2

1

git reset <commit3><commit3>提交 3 的 SHA1在哪里(或HEAD^^^)会将工作目录重置为提交 3,同时保持d未跟踪状态。

(但是,如果您打算在一次提交中重新添加它,我建议您git rebase -i HEAD^^^改为这样做;然后您可以将三个最新的提交压缩在一起。)

于 2012-05-02T10:25:54.373 回答
0

看看这里的“探索历史”:

http://schacon.github.com/git/gittutorial.html

还:

http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html

并使用git revertgit reset

如果您只想检查以前提交中的内容,您可以git checkout <commit>-<filename>阅读有关所有这些内容的手册页;)

于 2012-05-02T10:28:39.630 回答