如何在本地重置origin / master ref

时间:2015-06-25 09:42:55

标签: git

我有以下情况:

  1. 我在本地仓库中有3次提交,如下所示:

    initial -- a -- b

    masterorigin/master都指向b

  2. 之后,我获取原点,而repo看起来像这样:

    initial -- a -- b -- c -- d

    其中master指向borigin/master指向d

  3. 之后,我合并,现在master也指向d

  4. 我可以通过master重置我的git reset --hard b分支。

    我想要做的是重置origin/master引用以提交b。并且,我并不是说我想将远程存储库重置为某种状态 - 我只想在本地执行此操作。没有推动。我希望遥控器保持不变。我想要的是改变我的本地仓库关于远程仓库状态的知识。

    我该怎么做?

    我可以更改.git目录中的一些文件,但是哪些文件?或者它可能有一些git命令吗?

    为什么我需要那个?因为我希望能够重播场景,所以可以轻松测试我正在进行的基于git的项目管理。我想重播相同的情况,以便了解如果我稍微改变条件它的行为方式。

2 个答案:

答案 0 :(得分:3)

最安全的方法是使用git update-ref refs/remotes/origin/master <SHA>。这将导致您的更改记录在reflog中,如果您需要引用它。尽管正如codeWizard所说的那样,你的下一次获取仍会更新ref,因此直接更改它的风险也不大。

答案 1 :(得分:1)

在git branch中只是一个带有提交sha-1的“text”文件 正如您在评论中提到的,您的分支机构有路径。

.git/refs/heads/master 
.git/refs/remotes/origin/master

您可以手动编辑任何这些文件,并将任何所需的SHA-1粘贴到其中 我仍然无法看到任何理由这样做,但当然可能。

修改.git/refs/remotes/origin/master并将当前的SHA-1更改为您想要指向的SHA-1,但请记住您的下一个git fetch会再次将其更新为最新的提交服务器