ごく普通の在日

普段使ったことない役に立つGitオプションあれこれのまとめ

普段使ったことない役に立つGitオプションあれこれのまとめ

昨日Git勉強会に行ってきてそこで基本基礎以外のこともあって使ったことないコマンドやGitのオプションも知ることができて勉強になったのでここで紹介しながらメモっておこう。

Thank! @mstssk

ORIG_HEADとは?

git reset --hard ORIG_HEAD

いつ使うの?(今でしょ!? 違う!)別のブランチなどをマージしたとマージ前の状態に戻したい時。
いつもはログからコミットを探してgit reset --hardやっているかもしれないがORIG_HEADを使えば前の状態を参照できる。わざわざコミットログを探して確認しなくてもマージ前の状態、またはreset実行前の状態に巻き戻すことができるようだ。

git reflog

いまさらreflog知ったよ。これもっと早く知っとけばよかったかもしれない。

reflogはあならがHEAD(履歴の最新状態)までコミットしてきた過去のgitの操作の一覧をみることができる。commitやresetの履歴をみることができる。reflogから履歴を表示しgit reset --hard HEAD@{n}で(nは番号)状態を戻すこともできる。

git blame

英語のblameとは、「非難」や「責める」という意味がある。まぁ、悪い意味でとらえるのはまだ早い。もしかしてそのターゲットはプロジェクトに参加している同僚でもなくあなたかもしれないからな。

git blame somefile.txt を実行するとsomefile.txtの各行にコミット、変更者、時間が表示される。つまり特定のファイルに誰が、いつ、何を変更を加えたか細かくみる(責める)ことができるのだ。

git commit --amend

commitオプションの--amendを知らなかったわけじゃないがよく忘れている。直近のコミットメッセージを修正したいとき
git reset --soft HEAD^ とかやっていたが

git commit --amend -m "修正した新しいコミットメッセージ"

をたたけば大丈夫だ。

git cherry-pick

指定したコミットの変更内容を取り込んで適用する。適用後、衝突が生じなかったらコミットされる(ほとんどの場合は衝突されるらしい)。
git cherry-pick コミットのハッシュ で過去の変更をもう一度再利用したいときに試すといい。

git merge --squash

使い方
git merge --squash ブランチ名

ブランチでの変更をひとつのコミットにまとめてメージする。つまり、別のブランチを切ってそこで変更した後。例えばmasterにマージする際、それまでの変更したコミット履歴を残ってほしくない時などに使える。


上記のほとんどは、gitでの過去の履歴操作や変更のやり直し、変更の再利用に関する内容だ。これを知っておけばいざというときに便利に使いこなせるはず。

gitと同じように人生は履歴の操作や失敗の修正、やり直すことはなかなか簡単ではない。決断したことを後悔してしまう人は少なくないだろう。1回失敗しても懲りずに何度もなんども繰り返してしまったり、失敗しても相手になかなか許してもらえなかったり
でも人は忘れることができる。たとえどんなに時間をかけても、たとえその過去は大切な思い出だとしても
許してもらえないことは悩んでばかりしないこと。前に進まないと行かないんだから


うん。

普段使ったことない役に立つGitオプションあれこれのまとめ

昨日Git勉強会に行ってきてそこで基本基礎以外のこともあって使ったことないコマンドやGitのオプションも知ることができて勉強になったのでここで紹介しながらメモっておこう。

Thank! @mstssk

ORIG_HEADとは?

git reset --hard ORIG_HEAD

いつ使うの?(今でしょ!? 違う!)別のブランチなどをマージしたとマージ前の状態に戻したい時。
いつもはログからコミットを探してgit reset --hardやっているかもしれないがORIG_HEADを使えば前の状態を参照できる。わざわざコミットログを探して確認しなくてもマージ前の状態、またはreset実行前の状態に巻き戻すことができるようだ。

git reflog

いまさらreflog知ったよ。これもっと早く知っとけばよかったかもしれない。

reflogはあならがHEAD(履歴の最新状態)までコミットしてきた過去のgitの操作の一覧をみることができる。commitやresetの履歴をみることができる。reflogから履歴を表示しgit reset --hard HEAD@{n}で(nは番号)状態を戻すこともできる。

git blame

英語のblameとは、「非難」や「責める」という意味がある。まぁ、悪い意味でとらえるのはまだ早い。もしかしてそのターゲットはプロジェクトに参加している同僚でもなくあなたかもしれないからな。

git blame somefile.txt を実行するとsomefile.txtの各行にコミット、変更者、時間が表示される。つまり特定のファイルに誰が、いつ、何を変更を加えたか細かくみる(責める)ことができるのだ。

git commit --amend

commitオプションの--amendを知らなかったわけじゃないがよく忘れている。直近のコミットメッセージを修正したいとき
git reset --soft HEAD^ とかやっていたが

git commit --amend -m "修正した新しいコミットメッセージ"

をたたけば大丈夫だ。

git cherry-pick

指定したコミットの変更内容を取り込んで適用する。適用後、衝突が生じなかったらコミットされる(ほとんどの場合は衝突されるらしい)。
git cherry-pick コミットのハッシュ で過去の変更をもう一度再利用したいときに試すといい。

git merge --squash

使い方
git merge --squash ブランチ名

ブランチでの変更をひとつのコミットにまとめてメージする。つまり、別のブランチを切ってそこで変更した後。例えばmasterにマージする際、それまでの変更したコミット履歴を残ってほしくない時などに使える。


上記のほとんどは、gitでの過去の履歴操作や変更のやり直し、変更の再利用に関する内容だ。これを知っておけばいざというときに便利に使いこなせるはず。

gitと同じように人生は履歴の操作や失敗の修正、やり直すことはなかなか簡単ではない。決断したことを後悔してしまう人は少なくないだろう。1回失敗しても懲りずに何度もなんども繰り返してしまったり、失敗しても相手になかなか許してもらえなかったり
でも人は忘れることができる。たとえどんなに時間をかけても、たとえその過去は大切な思い出だとしても
許してもらえないことは悩んでばかりしないこと。前に進まないと行かないんだから


うん。