元のフォークを再同期するにはどうすればよいですか


33

Githubでプロジェクトを分岐しました。変更を加えてプルリクエストを送信しました。所有者は私のフォークをメインプロジェクトにマージし、その後いくつかの変更を加えました。そのため、今のところ、私のプロジェクトはメインプロジェクトで更新されていません。プルリクエストをマージした後、彼が行った変更を逃しました。メインプロジェクトでフォークを更新するにはどうすればよいですか?Webインターフェイスでそれを行う方法はありますか?

ありがとう


簡単な指示を書きます。ここでチェックアウト:webapps.stackexchange.com/a/58140/63016
Youngjae

2
よくできた公式ドキュメントがあります:help.github.com/articles/syncing-a-fork
アンドレミラス14

回答:


36

設計上、プロジェクトをフォークすると、元のリポジトリが変更されても更新されない別個のリポジトリが作成されます。ただし、git手動で簡単に更新できます。

3番目のリポジトリの助けが必要です(ローカルコピーで十分です)。3つのリポジトリがあります。

  • 「上流」:Githubの上流プロジェクトのリポジトリ。
  • 「Origin」:Githubのフォークのリポジトリ
  • 「ローカル」:コンピューター上のローカルリポジトリ。Forkを使用してクローンを作成しgit clone git@github.com:your-username/projectname.git、誰もがbranch を使用していると仮定しますmaster

現在、「Origin」と「Local」が同じ状態にあり、「Upstream」が1つ以上のコミット(マージとその後の変更)の先にあると仮定します。

まず、アップストリームプロジェクトをGitリモートとして追加します。

git remote add upstream https://github.com/upstream-username/projectname.git

次に、リモートのブランチからローカルリポジトリの現在の()ブランチに変更をプル(フェッチしてから自動的にマージmasterしますmaster

git pull upstream master

これで、ローカルリポジトリがと同期しましたupstream。最後に、ローカルリポジトリをGithubフォークにプッシュします。

git push origin master

これですべてが同期されました。



1
これは実際にWebインターフェースで可能です:webapps.stackexchange.com/a/31010/10390-thSoft
1

イーホー!私はこの明示的な情報を見つけようとして髪を引き裂いていました。共有してくれてありがとう!
ペポルアン14

...しかし、それはリポジトリ汚染と再同期は、Web経由で最良の選択肢ではないことを証明し、また、その答えのコメントを見てみてください
USR-ローカルΕΨΗΕΛΩΝ

プル後に「すでに最新」と表示されている場合はどうしますか?(私はすべて1つのサブディレクトリに変更し、私は、他のファイルには差がないはずですが、私はファイルがある)
トマス・ロベルト

1

リモートを追加し(GitHubヘルプを参照)、その新しいリモートからプルする必要があります。

git remote add mainProject https://github.com/user/mainProject
git pull mainProject master

0

見つけた この回答は、1つのブランチ(マスター)の同期のみを扱うため、元の回答を補完するものである。また、分岐以降、ブランチがアップストリームで作成されている場合、分岐でブランチを作成するのは少し複雑です。

簡単な答えは、上流のリポジトリのすべてのブランチでフォークを更新するには、このコマンドを実行することです。

for branch in $(git ls-remote --heads upstream|sed 's#^.*refs/heads/##'); do git push origin refs/remotes/upstream/$branch:refs/heads/$branch; done

これがしないのは、上流から削除された分岐を分岐から削除することです。特にフォークでブランチを作成した場合は、それを自動化する方法はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.