10

我在远程存储库(origin/master)中有提交,我想将其放入从该存储库(origin/remote_branch)创建的分支中。

当我结帐到那个远程分支时

git checkout -b mybranch origin/remote_branch

然后挑选我所做的提交

git cherry-pick 9df63616b0428cf6edc4261adb533a1ac516b9a0

当我尝试推送时,git 会说一切都是最新的。

git push

有什么我做错了吗?

4

2 回答 2

24

根据您的 Git 版本,它可能会尝试推送具有匹配名称的分支,即mastertoorigin/masterremote_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 手册页中的示例部分,了解如何覆盖默认行为。

于 2009-09-08T03:17:23.283 回答
0

使用最新(2019+)版本的 Git,创建分支将完成git switch(比令人困惑git checkout的更精确)

git switch -c mybranch --track origin/remote_branch

这样,mybranch会自动链接到origin/remote_branch,并且一个简单的git push就足以将新mybranch提交推送到origin/remote_branch.

于 2019-12-31T17:28:42.483 回答