1. ホーム
  2. ギット

[解決済み】ローカルリポジトリのブランチをリセットして、リモートリポジトリのHEADと同じにする

2022-03-17 22:41:08

質問

ローカルブランチをリモートリポジトリのブランチと同じようにリセットするにはどうすればよいですか?

しました。

git reset --hard HEAD

を実行しても git status ,

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
      modified:   java/com/mycompany/TestContacts.java
      modified:   java/com/mycompany/TestParser.java

なぜこのような「修正」があるのか、教えていただけませんか?私はこれらのファイルに触れていないのですか?もし触ったのなら、それらを削除したいのです。

解決方法は?

自分のブランチをリモートブランチと正確に一致させるのは、2つのステップで行うことができます。

git fetch origin
git reset --hard origin/master

これを行う前に、現在のブランチの状態を保存しておきたい場合(念のため)。

git commit -a -m "Saving my work, just in case"
git branch my-saved-work

これで、あなたの作業はブランチ "my-saved-work" に保存されました。これを元に戻したい (あるいは後で見たり更新したブランチと差分したりしたい) と思ったときのためです。

最初の例では、リモートリポジトリの名前が "origin" で、リモートリポジトリの "master" というブランチが、ローカルリポジトリで現在チェックアウトされているブランチに一致すると仮定していることに注意しましょう。

ところで、あなたが置かれているこの状況は、裸のリポジトリではなく、現在チェックアウトされているブランチにプッシュした場合によくあるケースに酷似しています。最近ローカルリポジトリにプッシュしましたか? もしそうでないなら、心配はいりません。何か他の原因でこれらのファイルが予期せず変更されてしまったのでしょう。そうでなければ、ベアでないリポジトリにプッシュすることは推奨されないということを認識しておくべきです (特に、現在チェックアウトされているブランチにプッシュすることは推奨されません)。