- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在请求更新时使用 git 在本地跟踪 Github pull 请求(例如:添加了更多提交)。 Github 有一种方法,您可以通过查看只读 refs/pull/来处理提交给您的存储库的 pull 请求。
换句话说,如果有人向我的存储库提交 pull 请求,我可以在本地检索该请求:
git fetch upstream pull/123/head:123
git checkout 123
当有人随后更新该 pull 请求时,问题就出现了。我不知道如何更新本地分支,因为 git pull 无法更新我的本地副本:
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=<remote>/<branch> 123
我试过:
git branch --set-upstream-to=upstream/refs/pull/123/head 123
git branch --set-upstream-to=upstream/refs/pull/123 123
git merge --ff-only refs/pull/123/head
merge: refs/pull/123/head - not something we can merge
最佳答案
我遇到了同样的问题,想分享一下我是如何解决的。
使用 --set-upstream-to
的想法不起作用,因为远程引用似乎不是分支。这听起来很奇怪,但我认为这与远程存储 ref 的位置有关(分支在 refs/heads 中,但 pull 请求在 refs/pull 中)。
但是,您可以在 git 配置中为您的 Remote 添加一个 refspec 到您的 fetch 规则
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
您甚至可以添加一个 git 别名,将单个 pr 编号添加到您的 gitconfig 中的 refspecs(也可能是一个别名,以便在您完成后将其删除)。您可以在 origin
之后使用任何您想要的,但这是一个常见的选择。
有了这个,当你执行 git fetch origin
时,git 也会更新 pr 的 ref。快完成了:
git checkout -b pr/${prnum} --track origin/pr/${prnum}
完成!现在你的本地分支 pr/123 跟踪 remotes/origin/pr/123。后者是一个仅在您的本地存储库中有效的名称,但每次执行 git fetch 时(包括执行 git pull 时),它都会与 pull 请求分支保持同步。
注意:不太旧的 git 版本也应该允许将上面的 checkout 命令替换为
git checkout pr/123
这将创建分支 pr/123
,并为 ref remotes/origin/pr/123
正确设置跟踪。
关于git - 如何在 git 中使用分支跟踪引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35689905/
我是一名优秀的程序员,十分优秀!