首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pull/merge请求之前更新(Pull)分支?

如何在pull/merge请求之前更新(Pull)分支?
EN

Stack Overflow用户
提问于 2020-12-30 08:19:32
回答 2查看 590关注 0票数 2

例如,假设我有一个名为develop的分支,并且我的所有特性都将是从develop创建的分支,稍后我将需要执行合并请求(在GitLab中,在GitHub中是拉取请求)。

如果我需要在将新分支推入origin并执行合并/拉取请求之前更新我的新分支,"git pull origin develop“是否也会更新我的新分支?

如果没有,我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2020-12-30 10:00:48

有几种方法,这取决于您正在使用的分支策略。在逐个项目的基础上,我会选择一种策略并坚持下去,但最有效的策略取决于您正在寻找的是什么。

Merge:(从分支执行):

  • git pull (或git fetch)
  • git merge

push

这保留了历史,并且是非破坏性的。它在分支上创建一个新的提交,表示引入到分支中的开发的更改。

Rebase:(从分支执行):

  • git pull --rebase (或git fetch)
  • git rebase push --
  • (或git push -f)

这重写了历史,而且是破坏性的。分支上的原始提交被丢弃并重新创建(它们看起来相似(相同的注释、文件和作者),但将具有不同的提交ids和提交时间。它让历史变得更“线性”。

Rebase with squash:(从分支执行):

  • git pull (或git fetch)
  • git rebase -i rebase origin/develop
  • git HEAD~2 (假设分支比开发提前2个提交)
  • git push --
  • (或git push -f)

类似于rebase (上面)-重写和破坏性-但将分支折叠为单个提交。历史不仅是线性的,而且是简洁的--整个分支都被折叠成一个提交。

我通常的建议是避免在没有经验的团队中使用rebase。使用rebase很容易陷入麻烦,而且有各种各样的事情需要警惕。然而,rebase创造了很好的历史(如果这很重要)-但取证变得更加困难(如果这很重要)。"--force“是git的一种方式,它告诉您您正在移除安全设置,并且要小心您正在做的事情。

查看git-pull上的手册页。有一些命令可以折叠、拉入/合并或拉入/重置,以将步骤减少一步。还有一些git-config命令可以指定“pull”始终是“pull-and-merge”或“pull-and-rebase”。

票数 1
EN

Stack Overflow用户

发布于 2020-12-30 08:36:00

正确的命令应该是:

代码语言:javascript
复制
git fetch
git switch myNewBranch
git rebase origin/develop
git push --force 

这样,您就可以在最新的origin/develop上重放(重新建立)新分支

现有的拉取请求/合并请求将自动更新,并且它的解决方案将是一个简单的合并(因为myNewBranch提交都是在目标分支develop之上的新提交)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65500465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档