当将更改推送到远程分支时,git说所有内容都是最新的

时间:2009-09-08 02:49:06

标签: git push git-checkout cherry-pick

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

当我结帐到那个远程分支

git checkout -b mybranch origin/remote_branch

然后挑选了我做的提交

git cherry-pick 9df63616b0428cf6edc4261adb533a1ac516b9a0
当我试图推动时,git说所有事情都是最新的。

git push

有什么我做错了吗?

2 个答案:

答案 0 :(得分:24)

根据您的Git版本,它可能会尝试推送具有匹配名称的分支,即masterorigin/masterremote_branchorigin/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