获取在特定分支上提交的文件列表(git / Atlassian Stash)
Getting a list of files that were committed on a specific branch (git / Atlassian Stash)
如何获取在特定分支(分支已被删除)上提交的文件(或提交)列表?
例如,我从 master 创建 TEST-123 功能分支,对其进行一些提交,推送到我的中央仓库,然后通过拉取请求合并回 master。 TEST-123 已删除。
在未来的某个时候,我需要知道在 TEST-123 上提交了哪些文件。
我的最终目标是能够获得使用特定工单签入的文件列表(所有文件都将在以工单命名的分支上签入)。
提前感谢您的任何想法/建议。
-帕维尔
我不确定 atlassian stash 是否总是在拉取请求合并时创建合并提交。但如果确实如此,那么您可以从历史记录中取回您的分支。
可以搜索历史,
git log --pretty=oneline --abbrev-commit --min-parents=2 | grep <some message>
一旦你有了合并提交的 SHA(假设 74805e6
),你可以做很多事情
检查parents,如果超过2个,相应地从parents中找出删除的分支
在大多数情况下,合并提交中会有两个 parent。
在一个 parent 中找到其他 中没有的变化(可能是您想要的)
git log 74805e6^1..74805e6^2 --name-only --oneline
带回旧分支
git checkout -b old_deleted_branch 74805e6^2
这将检出合并提交的第二个 parent。
两者的区别parent
git diff 74805e6^1..74805e6^2
只需使用其最后合并的提交 ID 代替分支名称,分支名称无论如何只是提交 ID 的回购本地同义词,加上一些默认值等的本地注释。
merge=$(git log --merges --format=%H --grep="Merge branch '$branchname'" | sed q)
将获得该提交,除非您将提交与快进集成到主线(这是发布具有管理意义的合并 --no-ff
的原因之一),或者有人严重扰乱您的合并提交主题。
git diff-tree -r --name-status $merge^ $merge
将向您显示合并更改的所有内容。
合并的拉取请求仍然存在,单击它会显示受影响文件的列表。您可能必须安装免费附加组件 'All pull requests' 才能返回相应的拉取请求。
已找到 RESTful Web 服务以获取针对票证的提交列表:
https://developer.atlassian.com/static/rest/stash/3.7.0/stash-jira-integration-rest.html
即:
/rest/jira/1.0/问题/{issueKey}/提交
如何获取在特定分支(分支已被删除)上提交的文件(或提交)列表?
例如,我从 master 创建 TEST-123 功能分支,对其进行一些提交,推送到我的中央仓库,然后通过拉取请求合并回 master。 TEST-123 已删除。
在未来的某个时候,我需要知道在 TEST-123 上提交了哪些文件。
我的最终目标是能够获得使用特定工单签入的文件列表(所有文件都将在以工单命名的分支上签入)。
提前感谢您的任何想法/建议。
-帕维尔
我不确定 atlassian stash 是否总是在拉取请求合并时创建合并提交。但如果确实如此,那么您可以从历史记录中取回您的分支。
可以搜索历史,
git log --pretty=oneline --abbrev-commit --min-parents=2 | grep <some message>
一旦你有了合并提交的 SHA(假设 74805e6
),你可以做很多事情
检查parents,如果超过2个,相应地从parents中找出删除的分支
在大多数情况下,合并提交中会有两个 parent。
在一个 parent 中找到其他 中没有的变化(可能是您想要的)
git log 74805e6^1..74805e6^2 --name-only --oneline
带回旧分支
git checkout -b old_deleted_branch 74805e6^2
这将检出合并提交的第二个 parent。
两者的区别parent
git diff 74805e6^1..74805e6^2
只需使用其最后合并的提交 ID 代替分支名称,分支名称无论如何只是提交 ID 的回购本地同义词,加上一些默认值等的本地注释。
merge=$(git log --merges --format=%H --grep="Merge branch '$branchname'" | sed q)
将获得该提交,除非您将提交与快进集成到主线(这是发布具有管理意义的合并 --no-ff
的原因之一),或者有人严重扰乱您的合并提交主题。
git diff-tree -r --name-status $merge^ $merge
将向您显示合并更改的所有内容。
合并的拉取请求仍然存在,单击它会显示受影响文件的列表。您可能必须安装免费附加组件 'All pull requests' 才能返回相应的拉取请求。
已找到 RESTful Web 服务以获取针对票证的提交列表:
https://developer.atlassian.com/static/rest/stash/3.7.0/stash-jira-integration-rest.html
即: /rest/jira/1.0/问题/{issueKey}/提交