你需要做的只是创建一个指向提交1的远程分支。
简短回答
git push origin [commit1 hash]:refs/heads/master-copy
长篇回答
假设这是你的代码仓库:
commit 2 (65bc341) O <-- master
|
(more commits) ...
|
commit 1 (125afe4) O <-- origin/master
为了达到你想要的目的,你需要使用git push命令,不需要创建本地分支。你需要向push命令传递三个参数:
git push [REMOTE NAME] [WHERE SHOULD THE REMOTE BRANCH POINT TO]:[REMOTE BRANCH NAME]
假设您遵循标准名称,REMOTE NAME 可能是“origin”。
REMOTE BRANCH NAME 是 master-copy。
最后,REMOTE BRANCH 指向的位置是 commit1 的哈希值(在我上面使用的示例中为 125afe4)。
因此,命令应该是:
git push origin 125afe4:master-copy
使用此命令,您告诉git在名为“origin”的远程仓库上创建一个名为“master-copy”的新分支,该分支指向提交125afe4。
如果您运行此命令(并且没有创建任何名为master-copy的本地分支),则会出现此错误。
error: unable to push to unqualified destination: master-copy
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@WHATEREVER_YOUR_REPO_URL_IS'
为什么会得到这个响应?因为git不知道您是要在远程存储库中创建分支还是标签。为了解决这种模棱两可的情况,您需要运行:
git push origin 125afe4:refs/heads/master-copy
完成了!
commit 2 (65bc341) O <-- master
|
(more commits) ...
|
commit 1 (125afe4) O <-- origin/master origin/master-copy
如果您按照被接受的答案中的步骤操作,所创建并删除的本地分支“master-copy”就是解决歧义的那个分支。希望我能为您提供有关如何运用
git-push
的见解,并向您展示您实际上不需要这个本地分支的内容。您只需使用一个命令即可获得所需,而无需使用三个命令!
请记住,如果您想随后删除远程分支,可以运行以下命令:
git push --delete origin master-copy
或者您可以使用旧的语法。
git push origin :master-copy
origin/master
和origin/master-copy
在同一次提交中?) - Arount