Git 如何使用主服务器的更改更新远程分支
我已经做了很多关于重新调整和合并远程分支的研究/实践,但我无法找到一个最终不会导致重复提交或远程分支的非快进推送的解决方案。这就是我要做的 我们有两个分支机构,Git 如何使用主服务器的更改更新远程分支,git,git-branch,Git,Git Branch,我已经做了很多关于重新调整和合并远程分支的研究/实践,但我无法找到一个最终不会导致重复提交或远程分支的非快进推送的解决方案。这就是我要做的 我们有两个分支机构,master(跟踪origin/master)和hebe(跟踪origin/hebe)hebe在一个月前被适当地从master分支出来。每天都有几个开发人员在这两个分支上工作 master将继续维护,并在公共代码中修复了几个bug,这些bug应在hebe分支中反映/更新。但是,hebe中的任何新代码都不应进入master 我试过: git
master
(跟踪origin/master
)和hebe
(跟踪origin/hebe
)hebe
在一个月前被适当地从master
分支出来。每天都有几个开发人员在这两个分支上工作
master
将继续维护,并在公共代码中修复了几个bug,这些bug应在hebe
分支中反映/更新。但是,hebe
中的任何新代码都不应进入master
我试过:
git rebase master hebe
从日志上看,这似乎正是我们想要的,hebe
提交位于最新的master
之上,但是当我尝试推送hebe
时,它导致了一个警告,提示非快进推送原点/hebe
或者我们从错误的方向来处理这个问题,子模块将是合适的解决方案?您应该只在非常罕见的情况下重新设置分支的基础,这些分支已经被推送并与其他人共享,因为您重写了历史,从而更改了提交的sha。这会导致您提到的重复提交,因为不同的sha意味着git的提交不同。
在您的情况下,最好将主机与
$ git checkout hebe
$ git merge master
$ git push origin hebe
通过此操作,您可以将来自master的所有更改合并到hebe
,但没有任何内容返回到master,所有sha保持不变。合并将创建一个所谓的合并提交(如果不可能进行快进合并)
因为它非常重要,并且会导致很多混乱,所以最后我不得不再说一次:除非您完全确定自己在做什么,否则永远不要重新设置已共享分支的基础
我强烈建议您阅读以下(免费在线)书籍的第三章,以便更好地了解合并/重定基址的工作原理