我有一个远程存储库(origin / master)中的提交,我想将它放在从该存储库创建的分支(origin / remote_branch)中。
当我结帐到那个远程分支
git checkout -b mybranch origin/remote_branch
然后挑选了我做的提交
git cherry-pick 9df63616b0428cf6edc4261adb533a1ac516b9a0
当我试图推动时,git说所有事情都是最新的。
git push
有什么我做错了吗?
答案 0 :(得分:24)
根据您的Git版本,它可能会尝试推送具有匹配名称的分支,即master
到origin/master
和remote_branch
到origin/remote_branch
。如果您的原始存储库没有名为mybranch
的分支,那么它认为没有任何内容可以更新。
要覆盖此默认值,您可以明确告诉git将哪个分支用作源(mybranch
)以及将哪个分支用作远程存储库(remote_branch
)上的目标:
git push origin mybranch:remote_branch
默认情况下,有一个配置选项告诉git推送到远程跟踪分支:
git config --global push.default tracking
我发现这更直观,我认为这是你正在寻找的行为。查看git config man page中的push.default
选项。另请查看git push man page中的示例部分,了解如何覆盖默认行为。
答案 1 :(得分:0)
使用最新版本(2019年以上)的Git,将使用git switch
(比confusing git checkout
更精确)创建分支
git switch -c mybranch --track origin/remote_branch
这样,mybranch
自动链接到origin/remote_branch
,简单的git push
就足以将新的mybranch
提交推送到origin/remote_branch
。