假设我们有三个提交,并且HEAD指向提交C。
A-B-(C<--HEAD)
我在B上进行软重置:
$ git reset --soft B
现在HEAD指向提交B,删除了提交C
A-(B<--HEAD)
并且索引仍然匹配C。因此我们决定重新提交。
$ git commit -m "C again"
$ git log
C'
B
A
我的问题是,由于我们已经进行了软重置,因此本地文件不会更新。使用什么git命令将本地文件“同步”到新的提交C'?我有一个主意是git checkout C'
。
另一个问题是在软复位并确认HEAD指向哪里后?
非常感谢!
[当您运行git reset --soft somewhere
时,HEAD指向somewhere
。如果您在分支上工作,则将分支设置为指向该somewhere
(而HEAD指向该分支)。如果您正在处理分离的HEAD,则HEAD指向您提供的somewhere
的修订版。
现在,关于文件...。假设您是在完成git reset --soft
之后创建修订的(是吗?),那么C'和C的文件是完全相同的。用git diff C
检查。
在软重置后说,我们更改文件(例如文件f)的内容。
然后,如果我们提交C',我已经检查了文件f的内容是否随该提交而改变。
即使我们结帐HEAD,文件f的内容也不会改变。
只有将文件f的内容更改为HEAD的内容(即C'的情况是,如果我们执行硬重置:git reset --hard HEAD
。