1. ホーム
  2. git

[解決済み] GitHubでフォークされたリポジトリを更新または同期するにはどうすればよいですか?

2022-03-16 08:17:12

質問

あるプロジェクトをフォークして、いくつかの修正を加え、プルリクエストを作成し、それが受理されました。数日後、別の貢献者によって別の変更がなされました。そのため、私のフォークにはその変更が含まれていません。

どうすればその変更を私のフォークに取り込むことができるでしょうか?さらに変更を加えたい場合、私のフォークを削除して再作成する必要がありますか?それとも更新ボタンがあるのでしょうか?

解決方法は?

フォークしたリポジトリのローカルクローンに、元の GitHub リポジトリを "remote" として追加します ("remotes" はリポジトリの URL のニックネームのようなものです -) 。 origin がその一例です)。 そして、その上流リポジトリからすべてのブランチを取得し、上流バージョンで作業を継続するためにリベースすることができます。 コマンドとしては以下のような感じです。

# Add the remote, call it "upstream":

git remote add upstream https://github.com/whoever/whatever.git

# Fetch all the branches of that remote into remote-tracking branches

git fetch upstream

# Make sure that you're on your master branch:

git checkout master

# Rewrite your master branch so that any commits of yours that
# aren't already in upstream/master are replayed on top of that
# other branch:

git rebase upstream/master

master ブランチの履歴を書き換えられたくない場合 (たとえば他の人がそれをクローンしているかもしれないから) は、最後のコマンドを次のように置き換えます。 git merge upstream/master . しかし、可能な限りクリーンなプルリクエストを行うためには、おそらくリベースしたほうがよいでしょう。


にリベースした場合、そのブランチは upstream/master の場合、GitHub 上でフォークした自分のリポジトリにプッシュするために強制プッシュが必要になることがあります。 そのためには、次のようにします。

git push -f origin master

を使うだけです。 -f は、リベース後の最初の1回だけです。