1. ホーム
  2. git

[解決済み] リモートリポジトリからブランチのフレッシュコピーを取得する方法は?

2023-04-30 15:56:25

質問

友人の地元 master ブランチは、どうやら災難だったようです (偶発的な mergecommit のようなものだと思います)。しかし、彼の開発ブランチは問題ありませんが、リモートへプッシュする準備が出来ていない変更が含まれています。

彼のローカルの master ブランチをリモートの master ブランチにコピーして、(他のブランチを上書きすることなく)新しいコピーを取得できますか?

どのように解決するのですか?

Jefromiさんのコメントの通りです。

git checkout master
git reset --hard origin/master

は正しいことをします: マスターをその原点状態に設定することです。(もし、すでに master ブランチにいる場合は、最初のコマンドを省略することができます)。また、ブランチの reflog もそのままにします。


古い劣悪な回答です。

git checkout dev
git branch -D master
git checkout master

これは別のブランチ (この例では dev" ) に切り替わり、ローカルブランチの master ブランチを削除し、それを remotes/origin/master から再作成します (設定やGitのバージョンによってはうまくいかないかもしれません)。最後のコマンドは、多くの場合、次のコマンドと同等です。

git checkout -b master remotes/origin/master

上の新しい回答と比べて、これはreflogが破壊されて再作成されるという欠点があり(つまり、必要に応じてこれを簡単に元に戻すことができない)、ここで何が起こるかがあまり明確ではありません。また、削除と再作成の間に切り替えられる別のブランチが存在する必要があります(ただし、これは元の質問の場合です)。