要移动检出分支的分支指针,可以使用git reset——hard命令。但是如何移动未签出分支的分支指针指向不同的提交(保持所有其他东西,如跟踪远程分支)?


当前回答

说实话,我很惊讶为什么没有人想到git push命令:

git push -f . <destination>:<branch>

点(.)引用本地存储库,您可能需要-f选项,因为目标可能“位于其远程对应对象的后面”。

虽然此命令用于在服务器中保存更改,但结果与将远程分支(<branch>)移动到与本地分支(<destination>)相同的提交完全相同。

其他回答

你可以对任意裁判这样做。这是如何移动分支指针:

git update-ref -m "reset: Reset <branch> to <new commit>" refs/heads/<branch> <commit>

其中-m为分支的reflog添加一条消息。

一般形式是

git update-ref -m "reset: Reset <branch> to <new commit>" <ref> <commit>

如果你喜欢,你可以挑关于reflog消息的虱子-我相信branch -f是不同于reset -难的,这不是他们中的任何一个。

为了丰富讨论内容,如果你想将myBranch分支移动到当前提交,只需省略-f之后的第二个参数

例子:

吉特妙兰


我通常这样做,当我在一个分离的头部状态下重新设置:)

git branch --force <branch-name> [<new-tip-commit>]

如果忽略new-tip-commit,则默认为当前提交。

New-tip-commit可以是一个分支名称(例如master, origin/master)。

建议解决方案git branch -f branch-pointer-to-move new-pointer在TortoiseGit中:

“Git显示日志” 检查“所有分支” 在你想要分支指针移动到的那一行(new-pointer): 右键单击“在此版本创建分支” 在“Branch”旁边输入要移动的分支名称(Branch -pointer- move) 在“Base On”下,检查新指针是否正确 检查“力” 好吧

如果你想将一个未检出的分支移动到另一个提交,最简单的方法是运行git branch命令,带-f选项,它决定分支HEAD应该指向的位置:

Git branch -f <branch-name> (<sha1-commit-hash>或<branch-name>)

例如,如果你想让你的本地开发分支跟踪远程(起源)开发分支:

Git branch -f develop origin/develop

要小心,因为如果您试图移动的分支是当前分支,这将不起作用。 使用实例移动分支指针。 git update-ref -m "reset:重置为" refs/heads/ "

git update-ref命令安全地更新保存在ref中的对象名称。

霍普,我的回答帮助了你。信息的来源是这个片段。