git: 如何获取有关分支合并到另一个分支的更多信息(何时,sha)?
git: How to get more information (when, sha) about a branch merging into another?
我发现 git branch -r --merged master
看到所有分支都合并到 master
我们的流程很标准:开发==功能分支-->开发==发布分支-->主控(“==”从创建分支;“-->”PR进入)
我想找出分支合并的时间(或最新的 sha),以便生成自上次 PR 合并到 master
后合并的分支列表
理想情况下,我们会有每个发布分支的清单
干杯
"git branch" 可能是这项工作的错误工具:它只会告诉你仍然存在的分支,而合并的功能分支并不是你特别需要的东西。
它对“合并”的定义也不能告诉你“什么时候”——它只是意味着至少有一条从“主”向后工作的路径可以让你到达该分支的当前尖端。 (提交永远不会真正“在”git 中的分支上;分支仅作为指向单个提交的指针存在,并从那里指向其整个历史记录。)
解决这个问题的另一种方法是:
git log --first-parent master..develop
只要进入 develop 的 only 提交是合并提交 - 没有快进合并或直接提交到该分支 - 这将为您提供它们的列表。
--first-parent
停止列出合并的每个功能的单独提交。
-
master..develop
表示法大致表示“开发中的所有内容不在主控中”。 (同样,“on”实际上意味着“可以从当前的提示到达”。)
您可以使用 --pretty
选项来自定义此处显示的内容。我经常将它与 --pretty='format:%s'
一起使用,它只显示合并提交上的提交消息。
我找到了适合我的解决方案:
我将发布分支相互比较
import sys
from subprocess import run, PIPE, CompletedProcess
if len(sys.argv) > 1:
branch1 = sys.argv[1]
else:
branch1 = "master"
if len(sys.argv) > 2:
branch2 = sys.argv[2]
else:
branch2 = "develop"
base_command = ["git", "branch", "-r", "--merged"]
branch2_command = base_command + [branch2]
process_result : CompletedProcess = run(branch2_command, stdout=PIPE, check=True)
branch2_result = process_result.stdout.decode("utf-8")
branch2_list = branch2_result.split()
branch1_command = base_command + [branch1]
process_result : CompletedProcess = run(branch1_command, stdout=PIPE, check=True)
branch1_result = process_result.stdout.decode("utf-8")
branch1_list = branch1_result.split()
result = [item for item in branch2_list if item not in set(branch1_list)]
print(branch2 + " minus " + branch1 + " is\n" + "\n".join(result))
如果我将 origin/release/1 与 origin/release/2 进行比较,我会在 release/2
中得到新内容
干杯
我发现 git branch -r --merged master
看到所有分支都合并到 master
我们的流程很标准:开发==功能分支-->开发==发布分支-->主控(“==”从创建分支;“-->”PR进入)
我想找出分支合并的时间(或最新的 sha),以便生成自上次 PR 合并到 master
后合并的分支列表理想情况下,我们会有每个发布分支的清单
干杯
"git branch" 可能是这项工作的错误工具:它只会告诉你仍然存在的分支,而合并的功能分支并不是你特别需要的东西。
它对“合并”的定义也不能告诉你“什么时候”——它只是意味着至少有一条从“主”向后工作的路径可以让你到达该分支的当前尖端。 (提交永远不会真正“在”git 中的分支上;分支仅作为指向单个提交的指针存在,并从那里指向其整个历史记录。)
解决这个问题的另一种方法是:
git log --first-parent master..develop
只要进入 develop 的 only 提交是合并提交 - 没有快进合并或直接提交到该分支 - 这将为您提供它们的列表。
--first-parent
停止列出合并的每个功能的单独提交。-
master..develop
表示法大致表示“开发中的所有内容不在主控中”。 (同样,“on”实际上意味着“可以从当前的提示到达”。)
您可以使用 --pretty
选项来自定义此处显示的内容。我经常将它与 --pretty='format:%s'
一起使用,它只显示合并提交上的提交消息。
我找到了适合我的解决方案:
我将发布分支相互比较
import sys
from subprocess import run, PIPE, CompletedProcess
if len(sys.argv) > 1:
branch1 = sys.argv[1]
else:
branch1 = "master"
if len(sys.argv) > 2:
branch2 = sys.argv[2]
else:
branch2 = "develop"
base_command = ["git", "branch", "-r", "--merged"]
branch2_command = base_command + [branch2]
process_result : CompletedProcess = run(branch2_command, stdout=PIPE, check=True)
branch2_result = process_result.stdout.decode("utf-8")
branch2_list = branch2_result.split()
branch1_command = base_command + [branch1]
process_result : CompletedProcess = run(branch1_command, stdout=PIPE, check=True)
branch1_result = process_result.stdout.decode("utf-8")
branch1_list = branch1_result.split()
result = [item for item in branch2_list if item not in set(branch1_list)]
print(branch2 + " minus " + branch1 + " is\n" + "\n".join(result))
如果我将 origin/release/1 与 origin/release/2 进行比较,我会在 release/2
中得到新内容干杯