获取在特定分支上提交的文件列表(git / Atlassian Stash)

时间:2015-02-24 18:10:41

标签: git bitbucket-server

如何获取在特定分支(已删除分支的位置)上提交的文件(或提交)列表?

例如,我从master创建TEST-123功能分支,对它进行一些提交,推送到我的中央仓库,并通过pull请求合并回master。 TEST-123已删除。

在未来的某个时刻,我需要知道在TEST-123上提交了哪些文件。

我的最终目标是能够获取使用特定故障单签入的文件列表(所有文件都将在名为故障单的分支上签入)。

提前感谢任何想法/建议。

-Pavel

4 个答案:

答案 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} /提交