【问题标题】:git reset --mixed FETCH_HEADgit reset --mixed FETCH_HEAD
【发布时间】:2014-01-04 09:07:13
【问题描述】:

假设我有一个名为 repo1 的仓库

在这个 repo 中,我有 5 个修订版,其中 A 是最新的

一个 乙 C D E

假设我有一个工作区,其中包含修订版 B 的文件,但是 出于某种原因,git 认为我正在修订 C。

我有兴趣拉下 git 元数据,以便我的工作区处于正确状态(例如 git 认为我有修订版 B)但我不想要文件

我的第一个想法是跑步:

1) git pull -n

2) git reset --mixed B

但是,由于合并冲突,这会失败

我的第二个想法是运行:

1) git fetch -n

2) git reset --mixed FETCH_HEAD

3) git reset --mixed 修订版 B

这是最好的解决方案吗?

感谢您的帮助。

【问题讨论】:

  • 请注意,FETCH_HEAD 的特殊之处在于 all 在获取期间更新的 refs 的名称都写在这里。因此,在一般情况下将其传递给 git reset 没有什么意义。

标签: git github version-control git-fetch


【解决方案1】:

--mixed 是重置的默认操作,因此您可以省略该标志。

如果您知道您的文件处于修订版 B 并且修订版 B 已经存在于 repo 中,您可以直接重置为该 SHA,无需获取:

git reset <sha>

如果提交不在 repo 中(例如,您手动复制了文件),那么您可以获取并重置它:

git fetch <repo-with-b>
git reset <sha>

这将使您的实际文件保持原样,但告诉 Git 您的存储库处于 &lt;sha&gt; 指定的修订版上。

【讨论】:

  • 非常感谢,很好的回答
猜你喜欢
  • 2013-07-19
  • 2012-10-18
  • 2011-04-01
  • 2018-03-27
  • 1970-01-01
  • 2015-05-18
  • 2016-02-24
相关资源
最近更新 更多