我对一个文件做了一些修改,这个文件作为一组文件的一部分已经提交了几次,但现在想把它的修改重置/恢复到以前的版本。
我做了 "git log "和 "git diff "来找到我需要的版本,但不知道如何让文件回到过去的状态。
git checkout -- foo
这将重置foo
为HEAD。你也可以。
git checkout HEAD^ foo
用于返回一个修订版,等等。
有趣的是,如果工作副本在名为foo
的目录中,git checkout foo
将不起作用;然而,git checkout HEAD foo
和git checkout ./foo
都会起作用。
$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
然而,请注意,git checkout ./foo
和git checkout HEAD ./foo
并不是完全相同的事情。
并不是完全相同的东西;比如说。
$ echo A > foo
$ git add foo
$ git commit -m 'A' foo
Created commit a1f085f: A
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
$ echo B >> foo
$ git add foo
$ echo C >> foo
$ cat foo
A
B
C
$ git checkout ./foo
$ cat foo
A
B
$ git checkout HEAD ./foo
$ cat foo
A
(第二个`add'将文件放在索引中,但它并没有**被提交) 提交)。
Git checkout ./foo
意味着恢复**索引中的路径./foo
。
添加HEAD
指示Git将索引中的路径恢复到其
`HEAD'的修订版,然后再这样做。