如果我们进行挤压提交,则无法确定功能分支是否与集成分支合并

Cannot determine if a feature branch is merged with integration branch if we do a squash commit

使用Github UI,如果我将一个功能分支合并到集成分支中并选择"Squash and Merge",功能分支的尖端不再合并到集成分支中.

如果我们不做 "Squash and Merge",那么功能分支的尖端 在集成分支中。

所以我的问题是 - 是否有可靠的方法来确定特定功能分支是否已完全合并到集成分支中,如果它是通过压缩提交完成的?

关于此的一件事,可能我们可以 运行 在将功能分支与集成分支合并之前:

git reset --soft "remotes/origin/dev"
git commit -am "soft-reset-commit"

然后使用 Github UI,我们将永远不会进行任何压缩。但是上面的问题是为了将它推送到远程,我做了:

git push -f

因为我压缩了本地,所以本地功能分支没有跟踪远程拥有的所有提交。

只要人们认为 git reset --soft 是安全的并且我的工作不会丢失,它可能是一个不错的选择。

我现在解决这个问题的方法是签出一个新分支,压缩它,然后将它推送到远程。将压扁的分支合并到远程集成分支后,我可以在本地删除压扁的分支(因为git branch --merged <integration>显示压扁的分支),然后将原来的分支也删除:

运行 这个:$ git fetch && git branch --merged <integration> 我们得到:

feature/xyz@squashed

那我去删除

feature/xyz

只要 feature/xyz 自从它被分支到 @squashed 分支后没有新的提交。