2014-10-27 75 views
0

我想学习的gitgit的结帐不能恢复到以前的状态

使用git init

,并添加一个名为context.txt

git add context.txt

git commit -m "add content", 
文件

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

git commit -m "modify content" 

,我想恢复以前的内容,

所以执行git log

显示

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

add context 

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

,所以我可以为任何帮助

回答

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的承诺-a自动启用所有跟踪,修改后的文件提交 如果说之前你认为工作流的git add阶段太麻烦了,Git允许您可以使用-a选项跳过该部分。这基本上告诉Git在任何“跟踪”文件上运行git add - 也就是说,上次提交并已修改的任何文件。如果你愿意,这可以让你做更多的Subversion风格的工作流程,简单地编辑文件,然后运行git commit -a当你想快照所有已经改变的内容时。尽管如此,您仍然需要运行git add来开始跟踪新文件,就像Subversion一样。

参考git reference

0

呢?在此先感谢什么的问题是在第二次提交“修改内容”时,您没有向索引添加任何内容并且没有执行提交(您使用git log确认了这一点,那么您只有一个条目)。这就是为什么工作目录保持不变,即使是在结账时。 您应该执行另一个git add content.txt或使用git commit -a -m "modify content"

+0

我相信他是问如何返回到以前的状态提交,而不是弥补已经存在一个 – 4rlekin 2014-10-27 08:11:38

+1

不,他质疑为何结账没有恢复以前的承诺和问题是他没有做出另一次提交。 – dan 2014-10-27 08:12:57

+0

等一下...他写道,他做了两个提交...你能解释一下吗?如果我误我应该然后删除我的答案(或改变它)在此先感谢 – 4rlekin 2014-10-27 08:14:54