我们在将功能分支合并到主服务器后删除功能分支。有时,我们需要生成一个补丁,其中包含来自不再存在的历史分支的所有提交。
为简化流程,我想提供一个生成此类补丁的脚本,只需要历史分支名称作为输入。
(可以从错误跟踪系统轻松获取分支名称)
答案 0 :(得分:1)
git中的分支只是文件中的一行文本,指向提交。删除分支时,reflog中没有任何历史记录。我建议在合并它们之前标记发布分支的末尾,这样您就可以浏览标记列表,当您需要从以前发布的代码创建补丁时,可以从中分支。
git tag -a 1.1 -m "Release 1.1"
git merge release/1.1
git branch -d release/1.1
然后,您可以使用git tag
和更晚的git branch hotfix/1.2 1.1
列出标记,以便从代码中创建分支。
如果您不想这样做,可以使用以下内容列出历史记录中的所有合并提交,通常包括已合并的分支名称。然后,您可以转到合并提交的第二个父级,这将是您的发布分支的最后一次提交。
git log --oneline --merges --grep="<branch name>"
git show --pretty=raw <commitId>
git branch hotfix/1.1 <commitId>^2
您可以组合这些命令并获得您要求的内容,但如上所述,我强烈建议您为此目的使用标记。