Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 重基后要素分支原点和本地不同步_Git - Fatal编程技术网

Git 重基后要素分支原点和本地不同步

Git 重基后要素分支原点和本地不同步,git,Git,我试图遵循此处描述的Git工作流程: 在完成一个特性并将其合并到我的开发分支之后,我使用git rebase更新了另一个特性分支 这似乎工作正常,但现在我尝试将此功能分支上的新更改推送到其原始计数器部分,结果出现以下错误: ! [rejected] open-sea-dragon-feature -> open-sea-dragon-feature (non-fast-forward) error: failed to push some refs to 'git@bitbu

我试图遵循此处描述的Git工作流程:

在完成一个特性并将其合并到我的开发分支之后,我使用git rebase更新了另一个特性分支

这似乎工作正常,但现在我尝试将此功能分支上的新更改推送到其原始计数器部分,结果出现以下错误:

! [rejected]        open-sea-dragon-feature -> open-sea-dragon-feature (non-fast-forward)
error: failed to push some refs to 'git@bitbucket.org:jeffreycwitt/lombardpress2.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.
我的树看起来像这样:

在图中,您可以看到OpenSeaDragon特性的两个后续提交,在重基之后,放在我的本地机器上开发分支的顶端之后。但这并没有发生在原始版本中,现在它们已经不同步了


我想知道如何使我的功能分支与原始功能分支恢复同步。

这正是为什么不应重写已发布分支的历史记录的原因。您现在有两个选项:

  • 如果您完全确定除了您之外没有人在使用远程分支(即
    源代码/公海龙功能
    ),您可以强制推送更新的分支:

    git push --force origin open-sea-dragon-feature
    
    在您的情况下,您将在这个过程中“丢失”两个提交,但在这里这应该是可以的,因为它们的重定基副本包含在新分支中

    再次声明:如果其他人可能已经拉了远程分支,请不要这样做!他们会陷入一船的麻烦时,突然拉重写的历史

  • 如果无法强制推送更新的分支(出于上述原因),则需要咬紧牙关合并远程分支:

    git merge origin/open-sea-dragon-feature
    
    之后,您将能够通过简单的快进合并进行推进,而使用分支的其他协作者将能够轻松地获取您的更改

    这将导致历史记录中出现一些重复提交。Git应该处理这些差异,并且能够执行干净的合并。如果重定基址的提交在不同方面是相同的,则在合并时不应出现任何冲突


  • 好的,因为我是唯一一个研究它的人,用力推应该可以。但澄清一下,以备将来参考:我想我不应该把精力放在我正在研究的“原始”特性分支上——因为我需要不时地“重新设置”这些特性分支的基础,以与开发分支保持同步(这有点让人不快,因为我喜欢能够备份我的工作。)@Jeff,就在今天,我写了一个你刚才问的答案。就我个人而言,我认为重写你只知道自己正在处理的已发布分支的历史记录是可以的(例如,单个fork的功能分支)。太棒了。谢谢你的回答。非常有用。