2017-02-19 12 views
11

私は二股目のgit repoのマスターブランチを完全に乱しました。git masterブランチをフォークされたリポジトリのアップストリームブランチにリセットするにはどうすればよいですか?

アップストリームのマスターリポジトリの内容で自分のフォークにプッシュされたマスターブランチを完全にリセットしたいとします。私は、支店の変更や歴史を維持することに関心がありません。

最も簡単なアプローチは、私のフォークされたレポとリークを上流のプロジェクトから削除することでした。しかし、私は失ったくない他のプッシュブランチで仕事をしています。

これで、プッシュされたマスターブランチを上流のマスターにリセットする方法はありますか?私は上流のマスターと私のローカルおよびリモート・マスターブランチをリセットするには、ここから行くん


git clone https://myrepo.git 
cd myrepo 
git remote add upstream https://upstream.git 
git fetch upstream 

答えて

17

ローカルのマスターブランチをアップストリームバージョンにリセットし、リポジトリにプッシュすることができます。 「上流」は、元のリポジトリと「起源」であると仮定すると

は、あなたのフォークです:

git checkout master 
# this will delete all your local changes to master 
git reset --hard upstream/master 
# take care, this will delete all your changes on your forked master 
git push origin master --force 

(あなたがgit remote add upstream /url/to/original/repoで「上流」として、元のレポを定義することができます。)

+1

作業ディレクトリをリセットするには 'git reset --hard upstream/master'とするべきでしょう。しかしあなたの答えはそれにもかかわらず正しいです。 – j6t

+0

はいgit reset -hard upstream/masterを使用しました – MagGGG

+0

"--hard"を使用しないでも、ローカル変更を維持しながら動作します。私は、おそらくdiffを検査するために、精確なステップでハードリセットを行うだろう。 –

1

これがリセットします上流のマスターとのあなたのマスターブランチとあなたのフォークされて以来、ブランチが更新されている場合は、同様にそれらの変更をプルします。

git checkout master 
git reset upstream/master 
git pull --rebase upstream master 
git push origin master --force 

PS:原産地はあなたのコピーですが、アップストリームはオリジナルです。

関連する問題