NServiceBusリポジトリで特定のプルリクエスト(まだメインストリームに処理されていない)をプルする必要があります。
https://github.com/johnsimons/NServiceBus/commit/d8524d53094e8181716e771c1023e968132abc15
それは明らかに私のレポではありませんが、そのプルリクエストに存在する変更が必要です。
これを行う最良の方法は何ですか?
リポジトリにプルを取得するには:
git fetch [email protected]:jboss/jboss-common-beans.git refs/pull/4/head
次に、FETCH_HEADで必要なことを行います。
git checkout -b new-branch FETCH_HEAD
git pull Origin pull/28/head
または
git fetch Origin pull/28/head:28
git checkout 28
あなたはこれを行うことができます:
1)アップストリームリモートを追加します。
git remote add upstream [email protected]:Particular/NServiceBus.git
2)その後、IDごとに新しいブランチへのプルリクエストをチェックアウトできます。
git fetch upstream pull/PULL_REQUEST_ID/head:NEW_BRANCH_NAME
次に、NEW_BRANCH_NAME
という名前のブランチにPRコードが含まれます。
私と同じ頻度でこれを行う場合は、 一部のエイリアス をセットアップすることをお勧めします。私はこれを私の.gitconfigに持っています:
[alias]
fetch-pr = "!f(){\
[ -z \"$1\" ] && { echo Usage: git fetch-pr PULL_REQUEST_ID [REMOTE_NAME] [NEW_BRANCH_NAME]; exit 1; }; \
remote=${2:-Origin}; \
branch=${3:-pr-$1}; \
git fetch $remote \"pull/$1/head:$branch\"; \
}; f "
pr = "!f(){\
branch=${3:-pr-$1}; \
git fetch-pr \"$@\"; \
git switch $branch; \
}; f "
上記により、私は次のことができます:
git fetch-pr 123 # fetch PR #123 into branch pr-123
git fetch-pr 123 some-branch # fetch PR #123 into some-branch
git pr 123 # fetch and switch to the branch
困難な状況(特にgit-repoをチェックアウトしていない場合)の場合、最も簡単な方法はパッチを適用することだと思います。そのためには、githubでpull-requestを開き、URLに「.patch」を追加してダウンロードし、パッチを適用します。
例:
cd cordova-plugin-media
wget https://github.com/Apache/cordova-plugin-media/pull/120.patch
patch -p1 < 120.patch
GitHubのこのヘルプ記事を参照してください: https://help.github.com/articles/checking-out-pull-requests-locally
github/hub
https://github.com/github/hub は、GitHub CLIヘルパーであり、GitHub APIからの追加情報を美しく使用して、このユースケースやその他のユースケースを処理します。例えば。:
git clone https://github.com/github/hub
# Just copy paste the URL.
hub checkout https://github.com/github/hub/pull/970
結果:
現在、PRを含む<USERID>-<BRANCH_NAME>
というブランチにいます。
自動的に設定された適切なブランチ名に注意してください。
そのブランチは、フォークの元のブランチを追跡するように設定されています。つまり、.git/config
には以下が含まれます。
[branch "<USERID>-<BRANCH_NAME>"]
remote = retronym
merge = refs/heads/ticket/969
rebase = true
したがって、さらにコミットがプッシュされた場合は、直接git fetch
できます。
Linuxにhub
をインストールするのは、Goに慣れていないがそれだけの価値がある場合、現在は苦痛です。 Ubuntu 14.04では、リポジトリのGoは古すぎるため、 [〜#〜] gvm [〜#〜] が最適なオプションです。
bash < <(curl -LSs 'https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer')
. "$HOME/.gvm/scripts/gvm"
gvm install 'go1.4'
gvm use 'go1.4' --default
go get github.com/github/hub
また、GitHubにWeb UIのコピーペーストチートシートを提供するよう依頼しました: https://github.com/isaacs/github/issues/449
アップストリームリポジトリをアップストリームリモートとして追加したら(@eliasが指摘したように):
$ git remote add upstream [email protected]:Particular/NServiceBus
デフォルトでプルリクエストを取得するようにgitを設定できます:
$ git config --local --add remote.upstream.fetch '+refs/pull/*/head:refs/remotes/upstream/pr/*'
それで、それを取得しましょう:
$ git fetch upstream
Fetching upstream
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/Particular/NServiceBus
* [new ref] refs/pull/1/head -> upstream/pr/1
* [new ref] refs/pull/2/head -> upstream/pr/2
そしてそれをチェックしてください:
$ git checkout pr/2
Branch pr/2 set up to track remote branch pr/2 from upstream.
Switched to a new branch 'pr/2'
ここに私のために働いたコマンドがあります。
私はすでにレポをクローンしていると仮定します(例えば pytorch )彼/彼女のシステムにローカルに。その後、ボランティア/愛好家が何らかのコードを提供し、リモートリポジトリにPRを発行しましたが、マスターまたは他のブランチにはまだマージされていません 。そう、
まず、git remote add
githubリモートリポジトリへ:
# I've given the name `original`; you can give some other name as per your liking
$ git remote add original https://github.com/pytorch/pytorch
次に、cd
をリポジトリpytorch
に入れてから、次のようにします。
# after this, the unmerged PR should be pulled to your local repo
$ git fetch original pull/<pull_number>/head # 23, 123 etc.,
現在、保留中のPRはローカルリポジトリにfetchedされており、フェッチのヒントはFETCH_HEADにあります。この保留中のPRlocallyをマージする場合は、次のようにします。
$ git merge FETCH_HEAD
この後、あなたがするなら:
$ git status
ローカルリポジトリは、保留中のPRの一部であったn
コミットよりも先にあることがわかります(つまり、1つのPRで複数のコミットを発行することが可能です)。したがって、コミットの数は、保留中のPRに含まれるコミットに依存します。
以下は、「git fetch」コマンドを実行して、「git fetch」を実行するときにすべてのプルリクエストを取得することです。
以下を〜/ .gitconfigに追加します
[remote "Origin"]
fetch = +refs/pull-requests/*/from:refs/remotes/Origin/pr/*
参照「refs/pull-requests /」にはstashの命名規則があることに注意してください。gitハブの場合は、異なる形式が必要になる場合があります
Githubには、プルリクエストをlocalリポジトリにマージするための明確なドキュメントがあります。
https://help.github.com/en/articles/checking-out-pull-requests-locally
要するに、GitHubのプルリクエストは、ベースリポジトリ内のブランチであり、ブランチ名はシーケンス番号であることがわかります。上記の記事は、この番号を見つける方法と、任意のブランチ名でローカルリポジトリにプルするためのgitコマンドラインマジックを示しています。
プルリクエストをGitHubで作成したフォークにマージする同様の簡単な方法を見つけることができませんでした。
他のリポジトリからマージされていないプルリクエストを自分のリポジトリに追加したいだけであれば、すべての複雑さは必要ありません(他の回答で示されているように)。
代わりに、自分のリポジトリに移動し、コミットハッシュを使用して(PRソースから)コミットをプルします。
git pull https://bitbucket.org/SomeUser/SomeProjectRepo/commits/c15...db2
このようにすると、まるで自分で編集したかのように、新しい編集済みファイルがたくさんできます。 commitこれらのタグ/ラベルを使用するかどうかはあなた次第です。
その後、すべてのニュースを自分のGitHubリポジトリにプッシュする場合は、いつものように実行します。
git commit -m "Added something by Anonymous"
git Push -u Origin master
この問題に対するこの解決策を見つけました-別のマシンでマージされていないPRから変更を取得し、git bash 1で次のことを行いました。マシン2でリモートリポジトリのクローンを取得している必要があります。 3. git pullを実行して完了!!!!!!!!!!!!!!