我想自动清理远程分支。我希望能够检查分支是否已合并到主分支中。最初,我的计划是使用git merge-base查看最后一个公共提交。
然而,现在我们将所有分支压缩成一个提交再合并到主分支中。由于这会创建一个新的提交哈希值,因此我无法找到主分支和我的分支之间的公共提交。
如果我们在合并时压缩了所有分支,我该如何确定一个分支是否已经被合并了呢?
提前感谢!
(master) $ git branch
delete-merged-prs
fixup
unmerged-branch
* master
(master) $ delete-squashed-branches
Finding local branches which were merged onto origin/master via GitHub...
warning: deleting branch 'delete-merged-prs' that has been merged to
'refs/remotes/origin/delete-merged-prs', but not yet merged to HEAD.
Deleted branch delete-merged-prs (was 325a42b).
warning: deleting branch 'fixup' that has been merged to
'refs/remotes/origin/fixup', but not yet merged to HEAD.
Deleted branch fixup (was e54f54b).
(master) $ git branch
unmerged-branch
* master
这些警告可以忽略,因为分支是通过Squash&Merge合并到主分支上的。
注意事项:
pip install pygithub
才能使用此脚本。origin/(当前分支)
的本地分支。因此,您需要在master
、develop
或您所使用的任何分支上运行它。git checkout -b foo-merge-test-branch master
git merge --squash foo
if [ -n "$(git status --porcelain)" ]; then
echo "foo has not been merged";
else
echo "foo is already merged";
fi
git reset --hard && git checkout master && git branch -d foo-merge-test-branch
只有在自从原始的 git merge --squash foo
后,原始文件中没有任何一个文件在 master
上看到了进一步的冲突更改时,才能使用此方法。
git log --grep="merge $BRANCH"
或类似的命令可能会起作用,如果在进行压缩合并时将分支名称放入提交消息中。 - Andrew C