我有以下情况:
我在本地仓库中有3次提交,如下所示:
initial -- a -- b
master
和origin/master
都指向b
。
之后,我获取原点,而repo看起来像这样:
initial -- a -- b -- c -- d
其中master
指向b
且origin/master
指向d
。
之后,我合并,现在master
也指向d
。
我可以通过master
重置我的git reset --hard b
分支。
我想要做的是重置origin/master
引用以提交b
。并且,我并不是说我想将远程存储库重置为某种状态 - 我只想在本地执行此操作。没有推动。我希望遥控器保持不变。我想要的是改变我的本地仓库关于远程仓库状态的知识。
我该怎么做?
我可以更改.git目录中的一些文件,但是哪些文件?或者它可能有一些git命令吗?
为什么我需要那个?因为我希望能够重播场景,所以可以轻松测试我正在进行的基于git的项目管理。我想重播相同的情况,以便了解如果我稍微改变条件它的行为方式。
答案 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
会再次将其更新为最新的提交服务器强>