例如,假设我有一个名为develop的分支,并且我的所有特性都将是从develop创建的分支,稍后我将需要执行合并请求(在GitLab中,在GitHub中是拉取请求)。
如果我需要在将新分支推入origin并执行合并/拉取请求之前更新我的新分支,"git pull origin develop“是否也会更新我的新分支?
如果没有,我该怎么做呢?
发布于 2020-12-30 10:00:48
有几种方法,这取决于您正在使用的分支策略。在逐个项目的基础上,我会选择一种策略并坚持下去,但最有效的策略取决于您正在寻找的是什么。
Merge:(从分支执行):
push
这保留了历史,并且是非破坏性的。它在分支上创建一个新的提交,表示引入到分支中的开发的更改。
Rebase:(从分支执行):
这重写了历史,而且是破坏性的。分支上的原始提交被丢弃并重新创建(它们看起来相似(相同的注释、文件和作者),但将具有不同的提交ids和提交时间。它让历史变得更“线性”。
Rebase with squash:(从分支执行):
类似于rebase (上面)-重写和破坏性-但将分支折叠为单个提交。历史不仅是线性的,而且是简洁的--整个分支都被折叠成一个提交。
我通常的建议是避免在没有经验的团队中使用rebase。使用rebase很容易陷入麻烦,而且有各种各样的事情需要警惕。然而,rebase创造了很好的历史(如果这很重要)-但取证变得更加困难(如果这很重要)。"--force“是git的一种方式,它告诉您您正在移除安全设置,并且要小心您正在做的事情。
查看git-pull上的手册页。有一些命令可以折叠、拉入/合并或拉入/重置,以将步骤减少一步。还有一些git-config命令可以指定“pull”始终是“pull-and-merge”或“pull-and-rebase”。
发布于 2020-12-30 08:36:00
正确的命令应该是:
git fetch
git switch myNewBranch
git rebase origin/develop
git push --force 这样,您就可以在最新的origin/develop上重放(重新建立)新分支
现有的拉取请求/合并请求将自动更新,并且它的解决方案将是一个简单的合并(因为myNewBranch提交都是在目标分支develop之上的新提交)
https://stackoverflow.com/questions/65500465
复制相似问题