git checkout无法恢复到以前的状态

时间:2014-10-27 07:58:00

标签: git

我想学习git

使用git init

并添加名为context.txt的文件

git add context.txt

git commit -m "add content",

然后我修改它,然后再次执行

git commit -m "modify content"

我希望恢复以前的内容,

所以执行git log

显示

  

commit e407bca38f2d609f073516624222d613b7072f71作者:wyxz125    日期:星期三10月22日22:21:09 2014 +0800

add context

git checkout "e407bca" 但是内容文件没有恢复以前的版本......它仍然是相同的。,

所以我该怎么办?事先感谢您的帮助

2 个答案:

答案 0 :(得分:0)

问题在于第二次提交"修改内容"你没有向索引添加任何内容并且没有执行提交(你使用git log确认了这一点,你只有一个条目)。这就是工作目录保持不变的原因,即使在结帐时也是如此。 您应该执行另一个git add content.txt或使用git commit -a -m "modify content"

答案 1 :(得分:0)

在Git中,您必须先将文件内容添加到临时区域,然后才能提交它们。如果文件是新的,你可以运行git add来最初将文件添加到你的临时区域,但即使文件已被跟踪" - 也就是说,它是你最后一次提交的 - 你仍然需要调用git add来为你的临时区域添加新的修改。

简而言之,如果要在下一个提交快照中包含您对其所做的任何更改,请在文件上运行git add。未添加的任何未添加的内容都不会包含在内 - 这意味着您可以比大多数其他SCM系统更精确地制作快照。

提交后

git add  context.txt --git add to add new modifications to your staging area.

然后

git commit -m "comment"

或使用快捷方式

git commit -am "comment"

git commit -a会在提交之前自动暂存所有已跟踪,已修改的文件 如果您认为工作流的git add阶段太麻烦,Git允许您使用-a选项跳过该部分。这基本上告诉Git在任何"跟踪"的文件上运行git add。 - 也就是说,您上次提交并且已被修改的任何文件。这允许您根据需要执行更多Subversion样式工作流,只需编辑文件,然后在要对已更改的所有内容进行快照时运行git commit -a。你仍然需要运行git add来开始跟踪新文件,就像Subversion一样。

参考git reference