【问题标题】:git says everything-up-to-date when pushing changes to a remote branchgit 在将更改推送到远程分支时说一切都是最新的
【发布时间】:2010-11-26 09:04:01
【问题描述】:

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

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

git checkout -b mybranch origin/remote_branch

然后精心挑选我所做的提交

git cherry-pick 9df63616b0428cf6edc4261adb533a1ac516b9a0

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

git push

我做错了什么吗?

【问题讨论】:

    标签: git push git-checkout cherry-pick


    【解决方案1】:

    根据您的 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 中的示例部分,了解如何覆盖默认行为。

    【讨论】:

    • 哇! “如果您的原始存储库没有名为 mybranch 的分支,那么它认为没有什么可更新的。”这完全做到了!感谢您的快速回复! :)
    【解决方案2】:

    使用最新 (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

    【讨论】:

      猜你喜欢
      • 2015-11-14
      • 1970-01-01
      • 2011-09-10
      • 2016-07-08
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2011-06-09
      相关资源
      最近更新 更多