当向远程分支推送更改时,Git会显示“everything-up-to-date”。

10
我有一些提交记录存在于一个远程仓库(origin/master),我想把它们放到从该仓库(origin/remote_branch)创建的分支中。
当我切换到这个远程分支时
git checkout -b mybranch origin/remote_branch

然后挑选了我提交的那些代码更改

git cherry-pick 9df63616b0428cf6edc4261adb533a1ac516b9a0

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

git push

我做错了什么吗?

2个回答

24

根据您的 Git 版本,它可能试图推送具有匹配名称(例如,master 推送到 origin/masterremote_branch 推送到 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手册中的示例部分,了解如何覆盖默认行为。


"如果你的原始代码库中没有 mybranch 分支,那么它会认为没有需要更新的内容。""这个方法真的很有用!感谢您的快速回复!:)" - paolo granada lim

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接