我有四个分支(master, b1, b2和b3)。我在b1-b3上工作后,我意识到我在分支主上有一些应该在所有其他分支中更改的东西。我改变了我在master中需要的东西…这是我的问题:

我如何用主分支代码更新所有其他分支?


当前回答

对于每个发现这个线程的人来说,寻找一个易于使用和一致的解决方案来合并您当前的分支与master上的最新更改:

你可以把它添加到你的shell配置中:

alias merge='currentBranch=$(git rev-parse --abbrev-ref HEAD) && git checkout master && git pull && git checkout $currentBranch && git merge master'

这个别名使用5个命令:

currentBranch=$(git rev-parse --abbrev-ref HEAD) # gets your current branch(needed for point 4)
git checkout master # checks out master
git pull # gets latest changes from master
git checkout $currentBranch # checks out the in point 1 saved branch
git merge master # merges your current branch with master

在添加别名之后,您可以简单地使用“merge”命令来“更新”当前正在处理的分支。

其他回答

@cmaster给出了最好的详细回答。简而言之:

git checkout master #
git pull # update local master from remote master
git checkout <your_branch>
git merge master # solve merge conflicts if you have`

您不应该重写分支历史记录,而应该保持它们的实际状态以供将来引用。当合并到master时,它会创建一个额外的提交,但这很便宜。提交不需要成本。

从master更新你的分支:

  git checkout master
  git pull
  git checkout your_branch
  git merge master

Git checkout master git拉 Git签出feature_branch Git重基master Git push -f

你需要做一个强有力的推动后,对主调基

您可以合并,也可以使用git的选择性跨分支应用单独的提交。

你有两个选择:

第一个是合并,但是这为合并创建了一个额外的提交。

检查每个分支:

git checkout b1

然后合并:

git merge origin/master

然后推:

git push origin b1

或者,你可以做一个rebase:

git fetch
git rebase origin/master