更轻松地保持git功能分支更新

haf*_*huk 51 git

我想知道是否有人会有更好的建议让一个功能分支与它的父分支同步.

我们通常有多个功能分支一次处理,每个功能分支都来自我们的develop分支.将功能分支develop每天合并几次是相当常见的.

为了掌握变化(即解决冲突),我发现我需要保留我正在积极处理的功能分支develop.

为此,我每天运行几次这些命令:

git checkout develop
git pull
git checkout feature/foo 
git merge develop 
git push
Run Code Online (Sandbox Code Playgroud)

最后git push我通常只在我与功能分支上的其他人合作时才会这样做.

有没有更好或更方便的方法来做到这一点?

Wes*_*ker 57

好吧,git确实用于将经常包装的内容包装到脚本中,然后调用脚本.上面没有大量的变化.他们都需要拉动上游分支,然后将您的更改与上游分支相结合.可能会缩短它的一些事情可能是:

git checkout feature/foo
git pull --all
git rebase develop
Run Code Online (Sandbox Code Playgroud)

这样,您可以简单地一次性拉出所有上游分支,而无需切换到另一个分支.变基可能是一种您可能更喜欢合并的操作,但这通常是个人选择,具体取决于您希望历史记录的外观.

  • 一句警告,rebase最好用于尚未推送的本地功能分支,请参阅https://www.atlassian.com/git/tutorials/merging-vs-rebasing#the-golden-rule-of-rebasing (6认同)
  • 另外,如果您将任何脚本命名为 git-somename 并将其放在路径上,那么您可以将其作为普通 git 命令直接调用,因此制作上述 3 行脚本“git-featurefoo”将允许您键入 `git featurefoo` 在一个命令中执行所有操作。 (3认同)
  • @alete:`git pull --all` 是......不完全是*错误*,但是这里的 `--all` 标志是毫无意义的,因为它不会做任何普通人会发现*有用的事情。这是高度误导的:它让人们认为这是一个“拉所有分支”操作,但事实并非如此。不要在这里使用 `--all` 。 (3认同)

nom*_*oda 7

另一种选择是使用目标获取,这允许您在不签出的情况下拉取开发:

git checkout feature/foo
git fetch origin develop:develop
git rebase develop
Run Code Online (Sandbox Code Playgroud)


X''*_*X'' 5

为什么不制作一个可以运行命令的脚本?

merge-develop.sh用文字创建

#!/bin/bash
git checkout develop
git pull
git checkout feature/$1
git merge develop 
git push
Run Code Online (Sandbox Code Playgroud)

然后简单地运行merge-develop.sh foo