我在远程存储库(origin/master)中有提交,我想将其放入从该存储库(origin/remote_branch)创建的分支中。
当我结帐到那个远程分支时
git checkout -b mybranch origin/remote_branch
然后挑选我所做的提交
git cherry-pick 9df63616b0428cf6edc4261adb533a1ac516b9a0
当我尝试推送时,git 会说一切都是最新的。
git push
有什么我做错了吗?
我在远程存储库(origin/master)中有提交,我想将其放入从该存储库(origin/remote_branch)创建的分支中。
当我结帐到那个远程分支时
git checkout -b mybranch origin/remote_branch
然后挑选我所做的提交
git cherry-pick 9df63616b0428cf6edc4261adb533a1ac516b9a0
当我尝试推送时,git 会说一切都是最新的。
git push
有什么我做错了吗?
根据您的 Git 版本,它可能会尝试推送具有匹配名称的分支,即mastertoorigin/master和remote_branchto origin/remote_branch。如果您的原始存储库没有名为的分支mybranch,那么它认为没有什么可更新的。
要覆盖此默认值,您可以明确告诉 git 哪个分支用作源 ( mybranch) 以及哪个分支用作远程存储库 ( remote_branch) 上的目标:
git push origin mybranch:remote_branch
有一个配置选项告诉 git 默认推送到远程跟踪分支:
git config --global push.default tracking
我发现这更直观,我认为这是您正在寻找的行为。签出git config 手册页push.default中的选项。还可以查看git push 手册页中的示例部分,了解如何覆盖默认行为。
使用最新(2019+)版本的 Git,创建分支将完成git switch(比令人困惑git checkout的更精确)
git switch -c mybranch --track origin/remote_branch
这样,mybranch会自动链接到origin/remote_branch,并且一个简单的git push就足以将新mybranch提交推送到origin/remote_branch.