数か月前に他のプロジェクトから分岐したGithubリポジトリがあります。数か月後、元のマスターリポジトリが変更されました。これらの変更を反映するためにリポジトリを更新したいと思います。これはGithub Webインターフェースで可能ですか?または、レポを削除して再フォークするだけですか?
数か月前に他のプロジェクトから分岐したGithubリポジトリがあります。数か月後、元のマスターリポジトリが変更されました。これらの変更を反映するためにリポジトリを更新したいと思います。これはGithub Webインターフェースで可能ですか?または、レポを削除して再フォークするだけですか?
回答:
プルリクエストがどのように発生するかを試すことができます。
プルリクエストを発行する
デフォルトでは、これは右側のフォーク(head repo)であり、左側の元のリポジトリ(base repo)へのコミットと変更をプッシュすることを要求します。
ベースリポジトリとヘッドリポジトリの両方のドロップダウンをクリックして、互いのリポジトリを選択します。
オリジナルのリポジトリが右側(プッシュする変更があるリポジトリ)にある間に、左側にリストを表示する(変更を受け入れる)必要があります。この画像に示されているように:
プルリクエストを送信する
フォークに変更がなければ、マージを自動的に受け入れることができるはずです。
コードが何らかの理由で競合するか、十分にクリーンでない場合、これはGitHub Webインターフェースを介して更新するために機能せず、フォークにプッシュバックする前にコードを取得してマシン上の競合を解決する必要があります。
簡単になります。
https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
分岐したGitHubリポジトリをリモートのアップストリームリポジトリからの変更で更新する方法
GitHubヘルプの手順:
セットアップ/操作手順:
Git Bash(Windows)またはLinux / Macターミナルを開きます
まだリポジトリのクローンを作成していない場合は、開発フォルダの作業ディレクトリに移動して、ワークステーションにクローンを作成する必要があります。
$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git
ワークステーション上の分岐レポの作業ディレクトリに移動します。
$ cd /user/development/my_forked_repo/
フォーク用に現在構成されているリモートリポジトリを一覧表示します。
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
フォークと同期される新しいリモートアップストリームリポジトリを指定します。
$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
フォークに指定した新しいアップストリームリポジトリを確認します。
$ git remote -v
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)
アップストリームリポジトリからブランチとそれぞれのコミットを取得します。マスターへのコミットは、ローカルブランチの上流/マスターに保存されます。
$ git fetch upstream
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
* [new branch] master -> upstream/master
フォークのローカルマスターブランチを確認してください。
$ git checkout master
Switched to branch 'master'
アップストリーム/マスターからの変更をローカルマスターブランチにマージします。これにより、ローカルの変更を失うことなく、フォークのマスターブランチがアップストリームリポジトリと同期されます。
$ git merge upstream/master
Updating a422352..5fdff0f
Fast-forward
README | 9 -------
README.md | 7 ++++++
2 files changed, 7 insertions(+), 9 deletions(-)
delete mode 100644 README
create mode 100644 README.md
ローカルブランチに一意のコミットがなかった場合、Gitは代わりに「早送り」を実行します。
$ git merge upstream/master
Updating 34e91da..16c56ad
Fast-forward
README.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
ここで、コミットをフォークにプッシュする必要があります。
$ git push
まだ認証されていない場合は、githubのユーザー名/パスワードの入力を求められます。認証されると、新しいコミットがフォークにプッシュされ、githubに表示されます。