如何在SourceTree中本地签出分叉拉取请求?

时间:2016-08-07 15:48:33

标签: git atlassian-sourcetree pull-request git-checkout

有时pull requests非常复杂和/或可能bug - 骑行。在这种情况下,仅通过阅读代码来检查拉取请求可能有点不合理。 checkoutpullbuildmerging之前首先在本地提取请求更有意义。通过这种方式,repo维护者可以更有信心拉取请求不会引入任何回归问题。

enter image description here

我可以很容易地从command-line查看拉取请求,但我更愿意使用SourceTree。我知道使用命令行简单明了,但我相信尽可能使用GUI工具而不是命令行工具。 SourceTree已经成为git client事实上的标准gui windows,所以看起来SourceTree会拥有这个基本功能。但是,我尝试了许多不同的命令和对话框,我似乎无法访问SourceTree中的pull请求。

使用SourceTree可以在本地提取拉取请求吗?怎么样?

7 个答案:

答案 0 :(得分:3)

我在不使用命令窗口的情况下寻找更好的方法时遇到了您的问题。

我目前的做法是:

  1. 添加发起PR(拉取请求)的分叉作为远程
  2. 进行获取以获取分支列表和
  3. 查看PR的分支。
  4. 它不能直接访问PR,但它确实为我提供了更改的本地副本。我仍然接受并合并或通过github请求修改。如果PR发生变化,我只需将更新拉入分支。

    Sourcetree似乎将PR视为管理原始回购的本地更改返回的一种方式。

答案 1 :(得分:2)

无法直接在SourceTree中检出来自分叉回购的拉取请求。

我将此问题转发给了atlassian问答板,并且the question was answered in a comment

  

据我所知,没有办法在其中执行此操作   sourcetree直接,因为sourcetree用于处理git repos   您在本地而不是使用PR或远程回购   您可以访问Bitbucket或Github。

基本上你必须单独克隆另一个repo,然后切换到用于拉取请求的任何分支。

令人遗憾的是,这个功能在命令行中非常简单,但在SourceTree的Gui中更加麻烦。

答案 2 :(得分:1)

将您的.git/config更改为以下内容并进行提取:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@github.com:{user}/{repo}.git
+   fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

答案 3 :(得分:1)

对于 Bitbucket,我使用了 Abhishek 的答案,但添加了 fetch = +refs/pull-requests/*:refs/remotes/origin/pull-requests/* 而不是 fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

答案 4 :(得分:0)

您可以获取pr分支,然后像任何其他分支一样处理PR。见https://gist.github.com/piscisaureus/3342247

基本上,所有PR都在refs/pull/*/head下,您通常使用的所有分支都位于refs/heads

答案 5 :(得分:0)

根本不可能在Bitbucket上结帐一个分叉回购。

您必须下载补丁并申请测试

# Download the patch file.
curl -u user:password https://bitbucket.org/api/2.0/repositories/{user}/{repo}/pullrequests/{pull_no}/patch -L -o name.patch

# Apply the patch file to your local Git checkout.
git apply name.patch

答案 6 :(得分:0)

我发现Abhishek的答案很好!

这是我的做法:

  • 转到存储库“ .git”文件夹并打开配置文件
  • "[remote "origin"]条目上,将访存更改为:fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
  • 关闭SourceTree中的repo-tab并再次将其打开。
  • 单击工具栏中的“获取”以获取所有PR分支。

没有PR显示为分支:

enter image description here