プログラミング

ほんとにこれだけ!よく使う Git コマンドまとめ

みんな大好き Git さま

ほんとにこれだけ!って書きましたが、自分にとってこれだけ!ってだけで皆さんにとってこれだけ!かは無視してますのであしからず。

というか、よく使うのによく忘れるから、完全に自分にとっての備忘録です。

前回ブログはこちらから↓

よく使う Git コマンド

ブランチを切る

git checkout -b 'ブランチ名'

ブランチ名を変更する

現在いるブランチのブランチ名を変えたいときは

git branch -m '変更したいブランチ名'

最新の master を取り込む

git pull origin master

欲しいコミットだけ取り込む

あるブランチの全ての変更を取り込むのではなく、一部のコミットだけ取り込みたい場合。

cherry-pickは本来「自分の気に入ったものだけをつまみ食いする」という意味があるそうですね、英語の意味を知っていればすんなり理解できるなぁ…

git cherry-pick <commit id>

現在のブランチから一時退避する

git stash

戻すときは、

git stash apply

過去のコミットの一覧を表示する

git log だと情報が多すぎるので、だいたいこれを使っている。

git log --oneline

空のコミットを打つ

テストコミットしたいときなど。

git commit --allow-empty -m "コミットメッセージ"

1つ前のコミットメッセージを変更する

よくタイプミスするので…

git commit --amend -m "変更したいコミットメッセージ"

2つ以上前のコミットメッセージを変更する

これ、何回やっても覚えられない!!

まずは rebase で最新から何番目のコミットを変更するのか指定。

git rebase -i HEAD~2   // これは2番目の場合

viエディタで pick の部分をeditに変更、

:wqでviエディタを離脱、

その後またターミナルに戻って、

git commit --amend -m "修正後のコミットメッセージ"

最後に rebase して無事に変更完了!

git rebase --continue

ちなみに、rebase を途中で中断するのは、

git rebase --abort

一時的に過去のコミットに戻る

git checkout <ハッシュ値>

過去に戻ったはいいけど、また最新の状態に戻りたい時って?

普通にこれでよかったw

git checkout <ブランチ名>

過去のコミットの状態に戻す

色々こねくり回したけど、あーやっぱ前のコミットの状態に戻りたい…なんて時に役立つ revert 。

revert は過去のコミットを消すことなく、逆向きのコミットを打つことで過去の状態に戻ることができます。過去のコミットは消された訳ではなくコミットの履歴は残ります。

git revert <戻りたいコミットのハッシュ値>

直前のコミットを消す

コミットと変更したファイルも一緒に戻す

git reset --hard HEAD^

現在のブランチの親ブランチを確認する

多分 develop から切ったけど、念の為確認したい〜(心配性)と言う時に便利。

git show-branch | grep '*' | grep -v "$(git rev-parse --abbrev-ref HEAD)" | head -1 | awk -F'[]~^[]' '{print $2}'

ローカルの変更を強制的に push する

git push -f origin <ブランチ名>

強制上書きなので、使用時は注意。

リモートのブランチを取得する

他のメンバーがリモートに push したブランチを自分のローカルに持ってきたい時など。

まずは fetch でリモートのブランチを取得

git fetch origin <リモートのブランチ名>

あとは checkout するだけ

git checkout  <リモートのブランチ名>

merge の中断

git merge --abort

コンフリクトあちゃーってなった時よくやる。

よく使うコマンドはエイリアスに登録すると便利

毎回いちいち入力するの、面倒なので。

エイリアス登録方法について詳しくはこちら↓

コンフリクトした時にいつも迷うこと

「入力側の変更」「現在の変更」ってどっちがどっち???!

入力側の変更 → 自分が変更した内容を取り込みたいブランチ(git merge を行うブランチ)

現在の変更 → 自分が変更したブランチの内容

です!!

まとめ

完全に自分の備忘録でしたが、

ここまでお読みいただき、ありがとうございました!