要移动检出分支的分支指针,可以使用git reset——hard命令。但是如何移动未签出分支的分支指针指向不同的提交(保持所有其他东西,如跟踪远程分支)?
当前回答
说实话,我很惊讶为什么没有人想到git push命令:
git push -f . <destination>:<branch>
点(.)引用本地存储库,您可能需要-f选项,因为目标可能“位于其远程对应对象的后面”。
虽然此命令用于在服务器中保存更改,但结果与将远程分支(<branch>)移动到与本地分支(<destination>)相同的提交完全相同。
其他回答
为了丰富讨论内容,如果你想将myBranch分支移动到当前提交,只需省略-f之后的第二个参数
例子:
吉特妙兰
我通常这样做,当我在一个分离的头部状态下重新设置:)
对于检出的分支,在你想要指向的提交在当前分支之前的情况下(除非你想撤销当前分支的最后一次提交,否则应该是这样),你可以简单地做:
git merge --ff-only <commit>
这是一个较软的git重置的替代方案——很难,如果你不是在上面描述的情况下,就会失败。
对一个未签出的分支做同样的事情,等价的是:
git push . <commit>:<branch>
如果你想将一个未检出的分支移动到另一个提交,最简单的方法是运行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中的对象名称。
霍普,我的回答帮助了你。信息的来源是这个片段。
建议解决方案git branch -f branch-pointer-to-move new-pointer在TortoiseGit中:
“Git显示日志” 检查“所有分支” 在你想要分支指针移动到的那一行(new-pointer): 右键单击“在此版本创建分支” 在“Branch”旁边输入要移动的分支名称(Branch -pointer- move) 在“Base On”下,检查新指针是否正确 检查“力” 好吧
Git 2.23.0引入了Git -switch命令,该命令也可以用于完成此任务。
git switch -C <branch-name> [<start-point>]
-C(大写C)选项表示如果<branch-name>已经存在,则将其重置为<起始点>。
使用-c(小写C),它将尝试创建一个新的分支,但如果已经存在则会失败。
<start-point>可以是一个散列、一个标记或另一个分支名称。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式