如何获取在特定分支(已删除分支的位置)上提交的文件(或提交)列表?
例如,我从master创建TEST-123功能分支,对它进行一些提交,推送到我的中央仓库,并通过pull请求合并回master。 TEST-123已删除。
在未来的某个时刻,我需要知道在TEST-123上提交了哪些文件。
我的最终目标是能够获取使用特定故障单签入的文件列表(所有文件都将在名为故障单的分支上签入)。
提前感谢任何想法/建议。
-Pavel
答案 0 :(得分:1)
只需使用其最后一个合并的提交ID代替分支名称,分支名称只是提交ID的repo-local同义词,加上一些默认的本地注释等。
merge=$(git log --merges --format=%H --grep="Merge branch '$branchname'" | sed q)
将获得该提交,除非您使用fast-forwards将提交集成到主线(这是发布管理上重要的合并--no-ff
)的一个原因,或者某人严重搞乱您的合并提交主题。
git diff-tree -r --name-status $merge^ $merge
将显示合并更改的所有内容。
答案 1 :(得分:0)
我不确定atlassian stash是否总是在pull请求合并上创建合并提交。但如果确实如此,那么你可以从历史中恢复你的分支。
您可以搜索历史记录,
git log --pretty=oneline --abbrev-commit --min-parents=2 | grep <some message>
一旦你拥有合并提交的SHA(假设为74805e6
),你可以做很多事情
检查父母是否有超过2个,相应地从父母那里识别被删除的分支
在大多数情况下,合并提交中会有两个父母。
在父母中查找不在其他内容中的更改(可能是您想要的内容)
git log 74805e6^1..74805e6^2 --name-only --oneline
带回旧分支
git checkout -b old_deleted_branch 74805e6^2
这将签出合并提交的第二个父级。
双亲之间的差异
git diff 74805e6^1..74805e6^2
答案 2 :(得分:0)
合并的拉取请求仍然存在,单击它会显示受影响文件的列表。您可能必须安装免费插件&#39;所有拉取请求&#39;回到相应的拉取请求。
答案 3 :(得分:0)
找到RESTful Web服务以获取针对故障单的提交列表:
https://developer.atlassian.com/static/rest/stash/3.7.0/stash-jira-integration-rest.html
即: /rest/jira/1.0/issues/ {issueKey} /提交