如何在GitHub中从问题中引用现有分支?

185

假设我有一个名为 feature/1 的分支,还有一个 #1 的问题。我想将该分支与该问题链接起来。

是否有一种方法可以从该问题链接该分支,而不需要进行提交。


自从Github允许“创建分支以解决问题”以来,这方面有任何更新吗?我之后可以链接一个分支吗? - Lars Flieger
6个回答

115

来自GitHub

参考资料

某些引用可以自动链接:

  • SHA:be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
  • User@SHA引用:mojombo@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
  • User/Project@SHA: mojombo/god@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
  • #Num:#1
  • User/#Num:mojombo#1
  • User/Project#Num:mojombo/god#1

似乎直接(例如用户/仓库/分支)不可能,但是也许可以使用树的ID?


98
我联系了Github的支持团队,他们告诉我目前还不可能。 - Nerian
8
希望这是可以实现的。一个解决方法是使用拉取请求(而不是直接推送),并从拉取请求中引用该问题。 - Olivier Lalonde
4
分支名称不是静态的,但提交记录是静态的,这说得通。 - jonasfj
6
Github分支的URL是静态的,它总是/user/repo/tree/branch-name(或/user/repo/commits/branch-name,具体取决于你想查看什么)。 - GMA
可以,正如我在我的回答中所示。 - Mr. Lance E Sloan

113

正如在另一个答案中提到的那样,GitHub会自动将各种东西链接起来,包括其他GH存储库,但不包括这些存储库中的分支。当我想要链接到这些分支时,我会手动制作链接,就像这样:

[a link to a branch](/_user_/_project_/tree/_branch_)

在分支的URL中,_user__project__branch_应该替换为相应的部分。例如,在GitHub的“linguist”项目中的一个分支:

[api-changes branch in github/linguist](/github/linguist/tree/api-changes)

重要提示:

  • GitHub的Markdown处理器使用括号内完整的URL值来创建链接。您必须考虑浏览器处理该链接的方式来指定URL。如果指定的URL仅为路径部分(如此示例中所示),则浏览器将将该路径视为相对于当前页面的URL。如果该相对路径以斜杠("/",例如在此示例中)开头,则它将相对于当前页面URL的服务器根目录。否则,不以斜杠开头的路径将被视为相对于当前页面URL的父级。 (这是基本的HTML链接规范。)
  • 引用项目特定分支时,请不要忘记包含URL的tree部分。

14
即使我写的是“tree”,但我的链接会被转换成“/user/proj/blob/branch”。编辑:可行的方式是使用“../../tree/branch”。 - vault
@vault,您能在此处发布一个包含此示例的Markdown文档的链接吗? - Mr. Lance E Sloan
@LS 如果我没记错的话,我需要这些信息来编写这个README - vault
4
@vault 我明白了!显然,从 MD 存储库文件和从 MD 问题文本中的链接有不同的规则。原始问题和我的回答都是关于问题文本中的链接,但我将更新我的回答以包括 MD 存储库文件。我 forked 您的存储库 并添加了一个链接到 README.md。GH 似乎会从链接中剥离前导“/”,并将其附加到当前 URL。这可能是个 bug。我会查一下。无论如何,在存储库文件中,相对 URL 的 ".." 更有意义。例如,如果您合并了我的 fork,则 README.md 中的新链接将指向我的 fork。 - Mr. Lance E Sloan

23
自2022年9月起,您可以从问题链接到分支
2022年11月起,自gh 2.19.0gh issue develop命令开始:
$ gh issue develop 123 --name "my-branch" --base my-feature # create a branch for issue 123 based on the my-feature branch

$ gh issue develop 123 --checkout # fetch and checkout the branch for issue 123 after creating it

$ gh issue develop --list 123 # list branches for issue 123
$ gh issue develop --list --issue-repo "github/cli" 123 # list branches for issue 123 in repo "github/cli"
$ gh issue develop --list https://github.com/github/cli/issues/123 # list branches for issue 123 in repo "github/cli"

但是,如NotX评论(2022年12月)中所指出的:

新的链接功能对于其他存储库中的分支无效。

因此,如果您有一个专用的问题存储库来保存来自其他所有存储库的问题,您仍然需要通过提及进行操作。

但是,正如L0tad评论中再次指出的(2023年7月):

问题可以与其他存储库的分支进行链接。
我刚刚为这个确切的用例做了这样的操作,其中问题位于专用问题存储库中,而开发则在其他地方进行。


请注意,从2013年4月开始(“提交页面的分支和标签标签”):
  • 任何提交都可以提及它所属的分支:

branch part of commit

如果提交不在默认分支上,指示器将显示包含该提交的分支。如果提交是未合并的拉取请求的一部分,则会显示一个链接。

Link to pull request

这意味着在问题中引用一个提交将允许用户查看分支(通过查看提交),甚至可以看到返回到问题的链接(仍然通过查看提交)。

新的链接功能无法用于其他存储库中的分支。因此,如果您有一个专门用于保存所有其他存储库问题的“issues”存储库,则仍需通过提及来实现。 - NotX
1
@NotX 感谢您的反馈。我已将您的评论包含在答案中,以增加其可见性。 - VonC
@NotX 这不是真的(至少从2023年7月开始不是了)。问题可以与其他仓库的分支关联起来。我刚刚为这个特定的用例做了这样的操作,其中问题位于专门的问题仓库中,而开发则在其他地方进行。 - L0tad
@L0tad 感谢您的反馈。我会将其包含在答案中,尽快完成。(https://meta.stackoverflow.com/q/425430/6309) - VonC
1
@L0tad 是的,你说得对。看起来他们最近加入了这个功能!:) - NotX
1
@L0tad 今天早上,编辑功能正常了吗?我已经将你的评论添加到答案中。 - VonC

12

您无法直接引用该分支。

但是,您可以将分支与另一个分支进行比较并进行引用。如果输入以下内容:

https://github.com/user1/repo/compare/branch1...branch2

它将呈现为

branch1...branch2

此外,您还可以比较不同 fork 下的分支。如果 user2 已经 fork 了 repo,则如下操作:

Also, you can compare branches across forks. If user2 has forked repo, this works:

https://github.com/user1/repo/compare/branch1...user2:branch2

0

可能最简单的方法是先创建问题,然后在Github中创建分支。

在问题详情中有一个“开发”部分,您可以在其中自动创建它并使用适当的命名或链接现有分支。


-1

我曾经在 Git 中寻找同样的可能性,但是没有找到,所以我决定直接使用哈希引用通过 markdown 链接来引用 分支

# Issue02

## Commit Hash _<hash_number>_

...Rest of comments in the issue...

所以,现在在我的组织中,我们总是在打开或关闭问题时引用它。它必须参考到某个哈希值,间接地参考到相应的分支。

我猜你已经知道了,但如果不知道,要获取哈希值,你将使用git log

注意:它不是引用到某个特定的分支,而是一个提交。

经过几个小时的工作,我认为可以自动完成这个并创建一个命令行工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接