无本地分支引用时,如何推送Git特定提交到远程分支?
如何推送无本地分支引用的特定Git提交到远程分支
当然有办法!你完全不需要本地有任何分支指向目标提交就能完成推送——Git本身就支持直接通过提交哈希来完成这个操作,根本不依赖本地分支引用。
核心命令非常简单,直接用提交的哈希值(完整哈希或者足够唯一的短哈希都可以)替换掉你原来命令里的本地分支名就行:
git push <remote-name> <commit-hash>:<remote-branch-name>
举个实际例子:如果你的远程仓库别名是origin,要推送的提交哈希是a1b2c3d,目标远程分支是feature/quick-fix,那命令就是:
git push origin a1b2c3d:feature/quick-fix
一些需要注意的细节:
- 首先要确保这个提交哈希对应的提交在你的本地仓库里是存在的——要么是你本地生成的,要么是通过
git fetch从远程拉取过来的。 - 如果目标远程分支还不存在,这个命令会直接在远程仓库创建该分支,并把指定提交作为分支的起点。
- 如果远程分支已经存在,Git会检查你要推送的提交是否是远程分支当前HEAD的后代。如果不是,默认会拒绝推送(防止意外覆盖他人的更改)。如果你确定要强制更新远程分支到这个提交,可以加上
-f参数,但一定要谨慎使用强制推送,尤其是在多人协作的分支上:git push -f origin a1b2c3d:feature/quick-fix
内容的提问来源于stack exchange,提问作者Edward Z. Yang
相关产品推荐
相关产品推荐

