例如,假设我有一个名为develop
,我的所有功能都将是从创建的分支develop
稍后我需要执行合并请求(在 GitLab 中,在 GitHub 中将是拉取请求)。
如果我需要在将新分支推入之前更新它origin
并执行合并/拉取请求,“git pull origin develop
“也会更新我的新分支吗?
如果没有,我该怎么做?
有几种方法,这取决于您使用的分支策略。在逐个项目的基础上,我会选择一种策略并坚持下去,但最有效的策略取决于您正在寻找什么。
合并:
(从分支执行):
- git pull (或 git fetch)
- git 合并起源/开发
- git push
这保留了历史并且是非破坏性的。它在分支上创建一个新的提交,表示将开发中的更改带入分支。
变基:
(从分支执行):
- git pull --rebase (或 git fetch)
- git rebase 起源/开发
- git Push --force (或 git Push -f)
这重写了历史并且具有破坏性。分支上的原始提交将被丢弃并重新创建(它们看起来相似(相同的评论、文件和作者身份),但将具有不同的提交 ID 和提交时间。它使历史更加“线性”。
用南瓜重新打底:
(从分支执行):
- git pull (或 git fetch)
- git rebase 起源/开发
- git rebase -i HEAD~2 (假设分支比开发提前 2 次提交)
- git Push --force (或 git Push -f)
与 rebase(上面)类似 - 重写和破坏性 - 但将分支折叠为单个提交。历史不仅是线性的,而且是简洁的 - 整个分支都折叠为单个提交。
我通常的建议是避免对缺乏经验的团队使用 rebase。变基很容易陷入麻烦,并且有各种各样的事情需要警惕。尽管如此,rebase 创造了美好的历史(如果这很重要的话)——但是取证变得更加困难(如果这很重要的话)。 “--force”是 git 告诉你你正在取消安全措施并要小心你正在做的事情的方式。
查看 git-pull 上的手册页。有一些命令可以折叠拉/合并或拉/变基以将步骤减少一。还有 git-config 命令指定“拉取”始终是“拉取并合并”或“拉取并变基”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)