Carpe Diem

備忘録。https://github.com/jun06t

【Git】覚えておくと便利なコマンド

コマンドラインで使っていてなにげによく使う&知ってると近道なコマンドをまとめてみました。

 

◆addしたファイルを取り消す

git reset HEAD ファイル名

 

◆更新した作業ツリーのファイルを元に戻す

git checkout ファイル名

 

 

◆他ブランチの特定のコミットだけマージしたい

他の人とマージでごちゃごちゃになった時めっちゃ便利です。

git cherry-pick コミットID

 

◆マージしようとしたら、コンフリクトだらけでマージ前に戻したい

git reset --hard ORIG_HEAD

 

◆あるコミットからブランチを作りたい

どこからテスト落ちてるんだろーと確認するときに使えます。

git checkout コミットID -b test-branch

 

◆ブランチ名変更

git branch -m 今のブランチ名 変更後のブランチ名

 

◆リモートブランチの削除

リモート名:origin

ブランチ名:hoge とすると

git push origin :hoge

プッシュするローカルブランチを何も指定しないところがポイントです。

 

◆ハードリセットしたけど戻したい

log にはなくても reflog に残っているのでそこから元に戻します。

git reflog
zzzzzz HEAD@{0}: reset: moving to 
yyyyyy HEAD@{1}: foo
xxxxxx HEAD@{2}: hoge
git reset --hard HEAD@{1}

 

◆コミットが細かくなりすぎたのでコミットログの統合と編集

今回の例では過去3つ分まとめます。

HEAD^^^ と書けば良いです。

git rebase -i HEAD^^^

 

まとめ方は以下のように色々あります。

pick xxxxxx parent
pick yyyyyy child
pick zzzzzz hoge
pick wwwww fuga
↓
pick xxxxxx parent
fixup yyyyyy child
edit zzzzzz hoge
squash wwwww fuga

詳細は「Gitのコミットの歴史を改変する(git Rebase) 1 / 2」が分かりやすいですのでどうぞ。

 

◆コンフリクト修正失敗したかな?と感じて異なるブランチのファイルと比較する

git diff branch1 branch2 foo/bar.txt

 

◆リベースでコンフリクト1

コンフリクト解決できそうなら修正して

git add 
git rebase --continue

 

◆リベースでコンフリクト2

コンフリクトぱない。戻したいって時は

git rebase --abort

 

◆あるコミットを取り消すコミット(逆のdiffをあてるコミット)をする -n をつけるとコミットはせずに変更点のみ作業ツリーにでてきます。

git revert コミットID

 

ソース:

Gitの忘れがちだけど絶対に使うであろうコマンド達

いざというとき覚えておきたいgitコマンドまとめ

gitで特定のコミットからブランチを切りたい(作成したい)

git diffで、異なるブランチの異なるファイルを比較する方法

git rebase 使い方