【问题标题】:Git. Syncing local files to new commit after soft reset and commit吉特。软重置和提交后将本地文件同步到新提交
【发布时间】:2020-06-25 02:01:57
【问题描述】:

假设我们有三个提交,并且 HEAD 指向提交 C。

A-B-(C<--HEAD)

我在 B 上进行软重置:

$ git reset --soft B

现在 HEAD 指向提交 B 并且提交 C 被删除

A-(B<--HEAD)

并且 index 仍然匹配 C。所以我们决定重新提交。

$ git commit -m "C again"
$ git log
C'
B
A

我的问题是,由于我们做了软重置,本地文件没有更新。什么 git 命令用于将本地文件“同步”到新的提交 C'?我的一个想法是git checkout C'

另一个问题是在软重置和提交之后 HEAD 指向哪里?

非常感谢!

【问题讨论】:

  • sync 是什么意思?如果您运行git checkout C,您将返回到原始版本 C,您使用软重置和提交所做的操作将消失。
  • 使本地文件的内容与提交 C' 中的内容相同
  • 嗯.... 如果您除了 reset --soft 和 commit 之外没有做任何其他事情,那么这些文件已经和 C 上的文件一模一样了。请咨询git diff C。应该没有变化。
  • 好吧……我开始明白你的意思了……让我看看能不能回答你的问题。

标签: git reset checkout


【解决方案1】:

说在软复位之后我们改变了一个文件的内容(比如文件 f)。

如果我们提交 C',我已经检查了文件 f 的内容不会随着提交而改变。

即使我们检查 HEAD,文件 f 的内容也不会改变。

唯一将文件 f 的内容更改为 HEAD(即 C')的内容是如果我们进行硬重置:git reset --hard HEAD

【讨论】:

    【解决方案2】:

    当您运行git reset --soft somewhere 时,HEAD 指向somewhere。如果您正在处理一个分支,那么该分支被设置为指向该somewhere(并且 HEAD 指向该分支)。如果您正在处理分离的 HEAD,则 HEAD 指向您提供的 somewhere 的修订版。

    现在,关于文件....鉴于您在执行git reset --soft 之后直接创建了修订版(对吗?),那么 C' 和 C 的文件完全相同。请与git diff C联系。

    【讨论】:

      猜你喜欢
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 2021-07-22
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多