概要
「この操作よくするけど、覚えてはないからローカルのメモから探して...」ってなる事が多々あるので、今の現場を飛ばされてpc没収されても困らないようにqiitaに残しておく。
あくまで操作をまとめるだけなので、それぞれのコマンドの概念を理解したい方は他の優秀な記事をご参照ください。
(merge, fetch, rebase周りの概念についてもまとめたいなと思ったのですが、その手の記事はちょっと調べたら大量にでてくるので止めた。)
内容
1. 特定のファイル(ディレクトリ)だけ他ブランチと置き換える
作業ブランチ配下で
git checkout ブランチ名 -- ファイル(ディレクトリ名)
config系のファイルで意図しない差分が出てしまったり、勘違いして関係ないファイルも修正してしまった時なんかによく使う。大抵developから反映させる。
(コピペ用)
git checkout develop -- hoge
2. コミットをまとめる、削除する
rebase -iで修正したいコミットの数(正確にはHEADから何個前までのコミットを修正するか)を指定
git rebase -i HEAD~4
編集モードでpickをs(squash)かd(drop)に修正する
pick cbe176caa2f (1 commit-message)
s 6e63c323984 (2 commit-message)
pick 8b94ad76fe1 (3 commit-message)
d c5e952c6425 (4 commit-message)
sにすると直前のコミット(1と2)が統合され、dにするとそのコミットは削除される。sは連続して書けば3つ以上ののコミットをまとめることも可能。
自分は実装中にdraftでPR作って、細かくcommitしてpushしまくり、レビュー前にcommitログを整形するのがルーティン。
3. ローカルブランチの削除
定期的に掃除する。
git branch | grep -v "develop|se-kihyo-gen" | xargs git branch -D
grep -v
で消したくないブランチを指定する。developは固定で、ブランチはチケットIDで切っているので、直近のIDに近いところだけ一応正規表現で除外する。
git branch -D
部分は -dにすればmergeしていないブランチは対象外となる。が、大抵いらないので問答無用で削除する。
4. 指定したコミットとHEADとの具体的な差分を確認
git diff COMMIT_ID HEAD
レビュー中、PRを開いているブラウザに移動するのがめんどくさい時に使うくらい。
使う頻度は高くない。
5. 特定のファイルをgitの差分に含めない
.gitignoreを修正するべきではないけど、差分に含めたくないファイルを一時的に登録しておく。
バージョンやパッケージ管理系のファイルを設定するくらい?
git update-index --skip-worktree (ファイル名)
- 上記の設定を削除
git update-index --no-skip-worktree (ファイル名)
- (コマンドではないが).git/info/excludeに追記するのもあり。プロジェクトに共有されないgitignoreというイメージ。
最後に
随時更新予定。他にも便利な操作あったらぜひ教えてください。