knowledge base

マークアップ/フロントエンドエンジニアのWEB制作における備忘録です。平日はWEB屋、休日は社会人劇団の主宰・劇作家をしています。

Git ナレッジ集

新たに無視したくなったファイルをgitignore に追加したが反映されない

Git上のキャッシュを削除する必要があります。GUIツールでは難しいため、CLIで作業をします。

  1. コマンドでキャッシュを削除
  2. commit → push

ファイル全体キャッシュ削除

git rm -r --cached .

ファイル指定してキャッシュ削除

git rm -r --cached <path>

キャッシュ削除の際、ファイルを削除しているわけではないのでご安心を。

また、pushした際に大量のremoveログが出るが、ローカルのファイルが消えたわけではないのでご安心を。

既にgit管理しているファイルを無視したい(ローカルの変更を無視する)

リモートとローカルで内容が違うファイルを持っておきたい ローカルファイルの変更を無視

git update-index --skip-worktree <path>

無視を解除

git update-index --no-skip-worktree <path>

マージの取り消し

git merge --abort

git addしたら「does not have a commit checked out」エラーが出た

.gitが2つあることが原因でした。片方を削除するとaddできました。

特定のファイル(ディレクトリ)の閲覧履歴を見たい

pathはカレントディレクトリからの相対パスでOK 削除したファイルのログも見ることができます。

git log --oneline -- <path>

新規追加・変更・削除それぞれのファイル名一覧を出したい

git diff --name-only --diff-filter=A <開始commitのハッシュ値> <終了commitのハッシュ値>
git diff --name-only --diff-filter=M <開始commitのハッシュ値> <終了commitのハッシュ値>
git diff --name-only --diff-filter=D <開始commitのハッシュ値> <終了commitのハッシュ値>

A:追加, M:変更, D:削除

複数のcommitをrevertしたい

git revert -n <コミット1のハッシュ値>
git revert -n <コミット2のハッシュ値>
git revert -n <コミット3のハッシュ値>

もし下記のようなエラーメッセージが出たらリバートするコミットを飛ばしている可能性が高いので、いちど変更をリセットし、再度HEADからrevertし直してください。

error: could not revert <コミットハッシュ>)... <コミットメッセージ>
hint: after resolving the conflicts, mark the corrected paths
hint: with ‘git add <paths>’ or ‘git rm <paths>’