假设我们有三个提交,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
。