私はGitHubで誰かのリポジトリをフォークし、元のリポジトリで行われたコミットと更新で私のバージョンを更新したいと考えています。これらは私が私のコピーをフォークした後に作られました。
オリジンで行われた変更を取得してリポジトリに組み込むにはどうすればよいですか?
git push --force origin --tags
、提案されたソリューションの後に実行してください!
私はGitHubで誰かのリポジトリをフォークし、元のリポジトリで行われたコミットと更新で私のバージョンを更新したいと考えています。これらは私が私のコピーをフォークした後に作られました。
オリジンで行われた変更を取得してリポジトリに組み込むにはどうすればよいですか?
git push --force origin --tags
、提案されたソリューションの後に実行してください!
回答:
元のリポジトリ(フォークしたもの)をリモートとして追加する必要があります。
クローンが完了すると、リポジトリには
origin
GitHub上のフォークを指す「」という名前のリモートが作成されます。
名前を混乱させないでください。これは、分岐した元のレポを指すものではありません。そのレポを追跡しやすくするために、「upstream」という名前の別のリモートを追加します。
$ cd github-services
$ git remote add upstream git://github.com/pjhyett/github-services.git
$ git fetch upstream
# then: (like "git pull" which is fetch + merge)
$ git merge upstream/master master
# or, better, replay your local work on top of the fetched branch
# like a "git pull --rebase"
$ git rebase upstream/master
また、GitHubの操作を容易にするルビーの宝石もあります。
「Gitフォークはgit cloneですか?」も参照してください。
git rebase upstream/master
ますが、答えに2つの可能性を追加しました。
git push --force
、GitHub上のブランチの履歴を、リベースしたローカルブランチに置き換えます。あなただけが悲しいブランチを使っているので、混乱はありません。
VonCの回答に加えて、さらに好みに合わせて調整することもできます。
リモートブランチからフェッチした後も、コミットをマージする必要があります。私は交換します
$ git fetch upstream
と
$ git pull upstream master
git pullは基本的にgit fetch + git mergeであるためです。
git rebase upstream master
は、から十分に逸脱している場合は競合がないことに注意してくださいupstream/master
。git-scm.com/docs/git-rebaseを参照してください(tl; dr:これはローカルマスターをアップストリームのマスターにハードリセットし、その後、分岐点からすべてのローカルコミットを再マージしようとします)
このビデオは、GitHubから直接フォークを更新する方法を示しています
手順:
Pull Requests
ます。New Pull Request
ます。デフォルトでは、GitHubはオリジナルをフォークと比較します。変更を行わなかった場合、比較するものはありません。switching the base
ます。これでGitHubがフォークをオリジナルと比較し、最新の変更がすべて表示されるはずです。Create a pull request
この比較をクリックして、予測可能な名前をプルリクエストに割り当てます(たとえば、オリジナルからの更新)。Create pull request
ます。Merge pull request
、最後にConfirm
マージします。フォークに変更がない場合は、自動的にマージできます。switching the base
オプションを見つけることができませんでした
使用する:
git remote add upstream ORIGINAL_REPOSITORY_URL
これにより、上流がフォーク元のリポジトリに設定されます。次にこれを行います:
git fetch upstream
これにより、マスターを含むすべてのブランチが元のリポジトリからフェッチされます。
このデータをローカルマスターブランチにマージします。
git merge upstream/master
フォークしたリポジトリ、つまりoriginに変更をプッシュします。
git push origin master
出来上がり!元のリポジトリの同期が完了しました。
GitHubデスクトップアプリケーションを使用している場合は、右上隅に同期ボタンがあります。Update from <original repo>
左上の近くをクリックしてください。
同期する変更がない場合、これは非アクティブになります。
ここにあるいくつかのスクリーンショットこれを容易にするには。