tor*_*rek 14
我对Travis本身一无所知,但GitHub确实创造了这些参考.特别是,基于观察 - 文档似乎有点吝啬,我只是GitHub的一个偶然的用户 - 当你点击GitHub中的"新拉请求"时,GitHub:refs/pull/number/merge
refs/pull/number/head
git merge
),如果成功,则创建名为的第二个引用.refs/pull/number/merge
请注意,这个自动创建的合并提交不在任何分支上,它只是分配了相同的pull-request编号,并且引用的名称在pull-request本身中很明显(只需替换head
为merge
).我相信,但还没有测试手动,这种合并的第一个父是尖端提交你要求某人是"开"时的分支,他们做同样的合并,即创建幕后的这个代码引用(或足够接近):refs/pull/number/merge
commithash=... # the commit ID for the pull-request
mergeinto=$(git rev-parse $branchname) # the branch we are to merge into
prnum=... # get next pull request number
# create the pull request itself
git update-ref refs/pull/$prnum/pull $commithash
# create the merge ref, if the merge succeeds
git checkout $mergeinto
if git merge -m "..." refs/pull/$prnum/pull; then
# merge succeeded: create the merge ref
git update-ref refs/pull/$prnum/merge HEAD
else
# automatic merge failed, discard it
git merge --abort
fi
Run Code Online (Sandbox Code Playgroud)
(这个特定的代码序列与索引混淆,并且离开了HEAD
,因此必须使用存储库锁定和后期工作清理,或者使用临时工作树;实际的代码序列可能不同于任何数量的原因).
因此:
所以,有人应该将我的分支合并到主人并创建相应的引用.是GitHub还是Travis?
考虑到GitHub 会,Ockham的William会建议没有必要援引特拉维斯.:-)
另一个问题,我可以列出GitHub repo的所有引用吗?
只要您有权访问:
$ git ls-remote
Run Code Online (Sandbox Code Playgroud)
(假设遥控器是GitHub URL)将显示所有公开的引用.我还没有看到Web界面的方法来做到这一点,也没有找到我(轻)阅读GitHub API文档.
一个答案提到git ls-remote
- 虽然这通常适用于我的用例,但我需要列出 git认为遥控器具有的内容 - 例如。当服务器管理员清理我过时的远程存储库时,我想使用本地 git 克隆来恢复它们。
要列出我曾经使用过的所有已知远程引用ls .git/refs/remotes/<name>/
- 事实证明在某些情况下这是不够的,例如在git-p4
存储库上我的远程引用之一仅在.git/packed-refs
.
使用git branch -r
可以工作,但输出不能清晰地解析,并且需要 grep 所需的远程引用。
经过一番挖掘后,我最终使用了git for-each-ref
:
git for-each-ref --format="%(refname)" refs/remotes/<name>/
Run Code Online (Sandbox Code Playgroud)
注意:git show-ref
还可以列出引用,但模式锚定到完整引用名称的末尾,并且仅匹配完整组件,因此仅当您知道所需的分支名称或列出所有引用并 grep 它们时,它才有用。我想要一些整洁、适合吊带衫的东西。
如果您只想要回购中所有引用的列表,则可以运行:
git show-ref
这将在下面打印<SHA> <NAME>
每个参考的.git/refs/*
归档时间: |
|
查看次数: |
8662 次 |
最近记录: |