Gitで強制的にpullを実行したい時。とりあえず以下実行すればよいだろう。

$ git fetch origin [ブランチ名]
$ git reset --hard origin/[ブランチ名]

 

やってることは、指定した対象ブランチの状態をfetchで実質ダウンロードして、それをcheckout中のブランチにセットするイメージ。これが実行された時点で、それまでのcheckout中ブランチの状態は消滅する。

git pull origin/[ブランチ名] して、何故か期待値と違う状況になることもあるから…「細かい話はいいからとにかくpullできりゃいいんだよ!」てな時に。

 

Tipsその2。Gitで、意図せぬコミットをしてしまった場合。そもそも不要なリソースなら$ git rm [ファイル名]で削除すればよい。が、「git管理下には起きたくないが必要なリソース」の場合はどうするか。

例えば本来なら.gitignoreに書いておくべきだが、それがない段階でやってしまうケースとか。絶対ありえる状況だけど、いざとなったら「あれ、どうするんだっけ」と詰まったのでメモ。

以下により、対象リソースが「git管理外だがOS上には残る」状態にできる。

$ git rm --cached [ファイル名]
$ git rm --cached -r [ディレクトリ名]

 

git add(追加)しただけの段階で気づいたら、以下実行。

$ git reset [ファイル名]
$ git reset /ディレクトリ名/

 

しかし一番最初に実行した追加を取り消すには、コミット取り消しと同様に git rm --cached を使う、とのこと。

git レポジトリを作成した直後、一番最初のに実行した git add を取り消したい場合、まだ HEAD の参照が存在しないため、上記の git reset を使った取消方法が利用できません。(これは、新規追加したファイルを初めての git add した場合も同様です。)レポジトリ内にリセット対象があってはじめてリセットできるのです。

さて、そのような場合の git add の取り消しは、インデックスのファイルを直接削除するコマンド「git rm –cached」を利用するしかありません。

git add の取り消し方法と、関連コマンドまとめ

 

無事クリーンにした後は、.gitignoreへ書いておくのを忘れずに。

このテーマ、他にも追加・コミットの段階や戻したい状態により対応内容が異なってくる様子だが、追いすぎると際限なくなるので今回はこれだけにしておく。

(2022年執筆記事の焼き直しです)

 


関連がありそうな記事