シナリオは次のとおりです。誰かのリポジトリを Github からフォークし、それをローカル ディレクトリに複製します。変更を加えてコミットし、フォークしたリポジトリにプッシュします。次に、元のリポジトリにプル リクエストを送信しますが、何らかの理由で拒否されます。その後、元のリポジトリは他の人からいくつかのコミットを取得し、フォークされたバージョンは古くなります。では、元のレポの最新バージョンを (フォークされたレポとローカルに) 取得するにはどうすればよいでしょうか? また、拒否されたコミットのコミット履歴を Github から削除するにはどうすればよいですか?
2 に答える
マスターブランチに独自の変更を加えないでください。新しいブランチを作成して変更を加え、プッシュする必要があります。とにかく、ブランチをリモートのブランチと同じにしたい場合は、次のようにします。
アップストリームがリモートであると仮定します。git fetch upstream
git checkout -f -B master upstream/master
上記のチェックアウトコマンドは、ブランチマスターが存在する場合は先に進み、存在しない場合はアップストリーム/マスターから作成してアップストリーム/マスターで上書きします。
リモート使用としてアップストリームを追加していない場合git remote add upstream repositoryurl
編集:それは-Bでなければなりません
編集:git reset --hard upstream/master
実際にはより適切です
フォークされたリポジトリを GitHub で同期し続けるには、2 つのステップのプロセスがあります。
ローカル リポジトリを以下と同期させます。
git fetch アップストリーム; gitマージ上流/マスター
GitHub のフォークをローカル リポジトリと同期させておく
git push オリジンマスター
説明については、 GitHub Fork A Repoを参照してください。フォーク元のリポジトリへのリモートとして「上流」をセットアップする必要があります。
「拒否されたコミット」については、ローカルブランチで行った場合は、ブランチを削除できます。ローカル ブランチにない場合は、ブランチの HEAD を選択したコミットにリセットする必要があります。お気に入り:
# Assume you are on master and need to go back to commit BeadBabe
git checkout -b temp
git branch -f master BeadBabe
git checkout master
git branch -d temp
行った。