リポジトリをフォークし、いくつか変更を加えたところ、すべてが台無しになってしまったようです。
現在のアップストリーム/マスターを作業のベースとして使用して、最初からやり直したいと思っています。
リポジトリをリベースするべきでしょうか、それとも削除するべきでしょうか?
ベストアンサー1
最も簡単な解決策は次のようになります (upstream
フォークされた元のリポジトリを参照するリモート名として ' ' を使用)。
git remote add upstream /url/to/original/repo
git fetch upstream
git checkout master
git reset --hard upstream/master
git push origin master --force
(これに類似GitHub ページの「困難な状況に陥った場合はどうすればいいですか?」セクション)
master
ブランチで行われた変更が失われる可能性があることに注意してください( のためローカルでreset --hard
、 のためリモート側でpush --force
)。
代替案としては、 のコミットを保存したい場合はmaster
、現在の の上にそれらのコミットを再生する方法がありますupstream/master
。
リセット部分を に置き換えますgit rebase upstream/master
。その後も、強制プッシュが必要になります。
「悪い状況に陥った場合はどうすればいいですか?「
より完全な解決策として、現在の作業をバックアップする方法(念のため)については、「Git マスターブランチをクリーンアップし、いくつかのコミットを新しいブランチに移動する「」。
「元の GitHub リポジトリからフォークした GitHub リポジトリに新しい更新をプルする「」とは何かを説明するために「」を使用しますupstream
。
注: 最近のGitHubリポジトリではmaster
枝を守るに対してpush --force
。まず
保護を解除する必要がありますmaster
(下の図を参照)。そして強制的にプッシュした後、再度保護する)。
注: GitHubでは、現在(2019年2月)アップストリームにマージされたプルリクエストのフォークされたリポジトリを削除するためのショートカット。