【问题标题】:Creating a long running branch创建一个长期运行的分支
【发布时间】:2020-02-17 00:54:20
【问题描述】:

问题:在尝试推送(可能长时间运行的)错误修复/维护分支时出现“更新被拒绝,因为您当前分支的尖端落后于其远程对应分支”的错误。

设置:开发在 master 分支上完成。一个提交,它在 master 的 HEAD 后面的许多提交,被标记为 dev-0.2 标记。我想基于 dev-0.2 标签创建一个新的(可能长期运行的)分支(例如 dev-0.2-bugfix),并使用新的 dev-0.2-bugfix 分支来跟踪与 dev-0.2 版本相关的更改。

我做了什么:

$ git checkout -b dev-0.2-bugfix dev-0.2
Switched to a new branch 'dev-0.2-bugfix

$ ..make changes to dev-0.2-bugfix files

$ ..commit changes to local dev-0.2-bugfix branch and now let's try to push it to remote

$ git push origin dev-0.2-bugfix
To file:////var/lib/git/Test.git
 ! [rejected]        dev-0.2-bugfix -> dev-0.2-bugfix (non-fast-forward)
error: failed to push some refs to 'file:////var/lib/git/Test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

$ git push origin dev-0.2-bugfix:dev-0.2-bugfix
To file:////var/lib/git/Test.git
 ! [rejected]        dev-0.2-bugfix -> dev-0.2-bugfix (non-fast-forward)
error: failed to push some refs to 'file:////var/lib/git/Test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

任何想法如何解决这个问题?我希望在遥控器上创建 dev-0.2-bugfix,目前 dev-0.2-bugfix 不会在遥控器上退出。 我不想带来 master 的最新更改,因为它们是在创建 dev-0.2 标记之后提交的,并且不是 dev-0.2 版本的一部分

谢谢

更新:尝试强制推送,它有点工作(见下文)但仍然没有在遥控器上创建 dev-0.2-bugfix:

$ git push -f origin dev-0.2-bugfix:dev-0.2-bugfix
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 2 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 419 bytes | 419.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0)
To file:////var/lib/git/Test.git
 + 337a471...0dd7573 dev-0.2-bugfix -> dev-0.2-bugfix (forced update)

 $ git branch -a
* dev-0.2-bugfix
  master
  remotes/origin/HEAD
  remotes/origin/master

【问题讨论】:

  • 就像提示说的,你需要拉
  • Dctid,就像上面解释的那样,拉出 master 分支将从 master 拉取在 dev-0.2 标签创建后提交的更改。这些更改不是 dev-0.2 版本的一部分,也不应该在 dev-0.2-bugfix 分支中。还是您的意思是我应该拉出更改然后再次手动删除它们?有没有更好的方法可以避免这种多余的工作?谢谢
  • 不要拉master分支,拉dev-0.2-bugfix分支。您说您创建了它,但您的遥控器上似乎已经存在具有该名称的分支。要么,要么您已将本地 dev-0.2-bugfix 配置为推送到另一个名称的远程分支。

标签: git


【解决方案1】:

问题是dev-0.2-bugfix 分支是在远程创建的,但没有显示在git branch -rgit branch -a 中,这导致了混乱。有关更多信息,请参阅Remote branch is not showing up in "git branch -r"。感谢所有回复的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 2017-04-21
    • 2016-10-14
    • 2011-04-24
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多