ben*_*n39 7 git branch rebase fast-forward
我正在尝试使用我的featureA分支,同时使其与主分支保持同步.
这是场景
git clone ssh://xxx/repo
git checkout -b featureA
$ git add file.txt
$ git commit -m 'adding file'
$ git push origin featureA
Run Code Online (Sandbox Code Playgroud)
同时有几个新的提交被推到了原点大师
git checkout master
git pull origin master
git checkout featureA
git rebase master
git push origin feature A
To ssh://xxx/repo
! [rejected] featureA -> featureA (non-fast-forward)
error: failed to push some refs to 'ssh://xxx/repo'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)
如何在不强制服务器接受的情况下进行rebase?
在变基之后你无法推动.提交现在有不同的SHA1,因为它们的历史不同.如果更新的ref不包含其祖先的旧参考,那么这是一个可能有害的操作,git将不允许它.
如果您不想强制,您唯一的替代方法是合并.
如果你单独工作并且不需要让其他人承诺进入这个分支,强制就不那么糟糕了.
对你的问题的一个简短回答:你可以反过来通过针对featureA重新设置master(但是还没有推送),并将featureA重置为该点.
这实际上是将master从master提交到featureA,缺点是你最终会在两个分支上重复提交.它将解决您的直接问题(如果这是您的意图),但从长远来看,您不应该重新定位已经被推送到远程分支的提交.您的方案中的最佳解决方案实际上是合并.
| 归档时间: |
|
| 查看次数: |
7257 次 |
| 最近记录: |