假设这是您的工作流程:
- 你提交了一个文件
- 你做了一些改变并上演了它
- 您进行了更多更改,但您希望恢复到第 2 步中的分阶段更改的版本。
你只需要运行git checkout -- A
. 这将消除任何未暂存的更改,但会在第 2 步结束时保留更改。
看一下这个示例工作流,它将清除一切:
A的内容只是version1
$ echo "version1" > A
提交更改 $ git add A && git commit -q -m 'initial commit'
$ git log
commit 4fd90642df048ca4beeb29c65c5f7a436e83055a
Author: Tuxdude <foo@bar>
Date: Fri Mar 8 16:28:36 2013 -0800
initial commit
A的内容是现在version2
$ echo "version2" > A
$ cat A
version2
暂存文件更改
$ git add A
检查当前的 git 状态
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: A
#
再做一些改变A
$ echo "version3" > A
$ cat A
version3
现在你决定,你想摆脱 `A. 您只需要从 git 的缓存中检出文件,即暂存区。
$ git checkout -- A
$ cat A
version2
您可以git status
再次运行,它会让您知道分阶段的更改。
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: A
#