12

シナリオは次のとおりです。誰かのリポジトリを Github からフォークし、それをローカル ディレクトリに複製します。変更を加えてコミットし、フォークしたリポジトリにプッシュします。次に、元のリポジトリにプル リクエストを送信しますが、何らかの理由で拒否されます。その後、元のリポジトリは他の人からいくつかのコミットを取得し、フォークされたバージョンは古くなります。では、元のレポの最新バージョンを (フォークされたレポとローカルに) 取得するにはどうすればよいでしょうか? また、拒否されたコミットのコミット履歴を Github から削除するにはどうすればよいですか?

4

2 に答える 2

8

マスターブランチに独自の変更を加えないでください。新しいブランチを作成して変更を加え、プッシュする必要があります。とにかく、ブランチをリモートのブランチと同じにしたい場合は、次のようにします。

アップストリームがリモートであると仮定します。git fetch upstream git checkout -f -B master upstream/master

上記のチェックアウトコマンドは、ブランチマスターが存在する場合は先に進み、存在しない場合はアップストリーム/マスターから作成してアップストリーム/マスターで上書きします。

リモート使用としてアップストリームを追加していない場合git remote add upstream repositoryurl

編集:それは-Bでなければなりません

編集:git reset --hard upstream/master実際にはより適切です

于 2012-04-25T10:04:38.437 に答える
4

フォークされたリポジトリを GitHub で同期し続けるには、2 つのステップのプロセスがあります。

  1. ローカル リポジトリを以下と同期させます。

    git fetch アップストリーム; gitマージ上流/マスター

  2. 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

行った。

于 2012-04-25T02:33:22.110 に答える