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

问题描述 投票:4回答:5

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

enter image description here

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

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

git atlassian-sourcetree pull-request git-checkout
5个回答
3
投票

我在寻找更好的方法时遇到了你的问题而没有使用命令窗口。

我目前的做法是:

  1. 添加发起PR(pull请求)的fork作为Remote
  2. 进行获取以获取分支列表和
  3. 看看PR的分支。

它不能直接访问PR,但它确实为我提供了更改的本地副本。我仍然接受并合并或通过github请求修改。如果PR更改我只是将更新拉入分支。

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


2
投票

无法直接在SourceTree中检出来自forked repo的pull请求。

我把这个问题转发给了atlassian问答板,以及the question was answered in a comment

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

基本上你必须单独克隆其他repo,并切换到用于pull请求的任何分支。

从命令行来看,这种功能很难过,但在SourceTree的Gui中更加麻烦。


1
投票

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

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

0
投票

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

基本上,所有的PR都在refs/pull/*/head下,你经常使用的所有分支都在refs/heads


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
© www.soinside.com 2019 - 2024. All rights reserved.