如果没有新的提交,是否可以在 git 中查看谁合并了一个分支?
Is it possible in git to view who merged a branch if it was without a new commit?
用户 A 在 "master" 分支中提交 (1)。
用户 B 在 "feature" 分支中基于 (1) 提交了 (2) 和 (3)。
用户A合并(3)到master分支。
所以现在看起来像这样:
- hash3 - (origin/master, origin/feature) 提交 3(用户 B)
- hash2 - 提交 2(用户 B)
- hash1 - 提交 1(用户 A)
现在用户 B 似乎已经提交到 master 分支。但他没有。它看起来像这样只是因为用户 A 已合并。但是没有这次合并的记录。仅显示提交。
是否有任何记录将此提交视为由两个不同用户完成的两个不同操作(提交然后合并),而不是仅仅将它们显示为一件事?
听起来您遇到了这样一种情况:一个用户是 fast-forwarding 功能的 master
分支,并且在此过程中引入了由另一位开发人员完成的提交。没有留下任何痕迹,因此看起来是两个开发人员进行了这些提交,而实际上 fast-forward 是由一个开发人员完成的。
有一种方法可以强制合并提交,即使 fast-forward 会发生,也不需要合并提交。如果您计划将 feature
合并到 master
,您可以使用 --no-ff
标志保证合并提交:
git checkout master # switch to master
git merge --no-ff feature # merge feature into master; force merge commit
当然,如果您使用的是 GitHub 或 Bitbucket,则此合并可能发生在存储库本身上。在这种情况下,您必须配置您的特定提供商来执行此操作。
参考: Why does git fast-forward merges by default?
用户 A 在 "master" 分支中提交 (1)。
用户 B 在 "feature" 分支中基于 (1) 提交了 (2) 和 (3)。
用户A合并(3)到master分支。
所以现在看起来像这样:
- hash3 - (origin/master, origin/feature) 提交 3(用户 B)
- hash2 - 提交 2(用户 B)
- hash1 - 提交 1(用户 A)
现在用户 B 似乎已经提交到 master 分支。但他没有。它看起来像这样只是因为用户 A 已合并。但是没有这次合并的记录。仅显示提交。
是否有任何记录将此提交视为由两个不同用户完成的两个不同操作(提交然后合并),而不是仅仅将它们显示为一件事?
听起来您遇到了这样一种情况:一个用户是 fast-forwarding 功能的 master
分支,并且在此过程中引入了由另一位开发人员完成的提交。没有留下任何痕迹,因此看起来是两个开发人员进行了这些提交,而实际上 fast-forward 是由一个开发人员完成的。
有一种方法可以强制合并提交,即使 fast-forward 会发生,也不需要合并提交。如果您计划将 feature
合并到 master
,您可以使用 --no-ff
标志保证合并提交:
git checkout master # switch to master
git merge --no-ff feature # merge feature into master; force merge commit
当然,如果您使用的是 GitHub 或 Bitbucket,则此合并可能发生在存储库本身上。在这种情况下,您必须配置您的特定提供商来执行此操作。
参考: Why does git fast-forward merges by default?