我有几个本地分支,一段时间后,我将所有这些分支合并到 master 中,然后我想将本地 master 合并到所有本地分支中。
我怎样才能做到这一点?
git 中没有一个命令,但是“为所有分支”做某事的方法是在 bash 会话中:
for BRANCH in `ls .git/refs/heads`; do something $BRANCH; done
这可用于合并:
for BRANCH in `ls .git/refs/heads`; do if [[ "$BRANCH" != "master" ]] ; then git checkout $BRANCH ; git merge master ; fi ; done
for BRANCH in `ls .git/refs/heads`; do if [[ "$BRANCH" != "master" ]] ; then git checkout $BRANCH ; git reset --hard master ; fi ; done
您可以删除本地分支并重新创建它们。这样,新分支将成为主分支的镜像。您可以使用 获得相同的结果git checkout branch-name && git reset --hard master
。
请记住,这可以删除一些提交。如果您不希望这样(可能是因为这些本地分支有一个远程分支),您将需要执行git merge
: git checkout branch-name && git merge master
。
我从这里使用了 VonC 的答案,但后来由于某种原因ls .git/refs/heads
停止生成所有分支名称 - 此文件夹中只有两个。所以这个修改后的版本对我有用:
for BRANCH in `git branch`; do if [[ "$BRANCH" != "master" ]] ; then git checkout $BRANCH ; git merge master --no-edit; fi ; done