読者です 読者をやめる 読者になる 読者になる

git コマンド 備忘録

 
$ git push [BリポジトリURL] [今いるAリポジトリのbranch名]:[pushしたいBリポジトリのbranch名]
 
  • git commitしたけど、この差分もさっきのcommitにいれたいな、、でもコメントもっかい書くのだるいな。。。
$ git commit --amend -C HEAD
 
  • うゎー、結構改修あるからちょっとずついっぱいcommitしたいな。けどlogには1個のcommitでいいな。。。
今いる作業ブランチから
$ git branch temp_hoge  (or git checkout -b temp_hoge)
修正...commit...修正....commit.....
$ git merge --squash temp_hoge
その後、git commitで完了
 
  • あれ、よくよくgit logを見ると、実はよーわからんlogがある。なにこれ。。。
$ git log 
commit hogehogehogehogehogehogehoge
Merge: hogera hoge
Author: mokokko 
Date:   Thu Oct 25 09:13:05 2012 +0900

    Merge branch 'feature/ho_ge_ge' of github.hoge.jp:hoge/hogera into feature/ho_ge_ge

commit hohohohogeeeeeeeeeeeeeee
....

このlogは?
=> git pull したとき、マージされ、しかもfast-forwardじゃなかったときはこんな感じのマージコミットが生成される。
non-fast-forward: リモートにコミットがあり、かつローカルにもコミットがあるようなときのこと

 
  • えー、git pull のマージコミットのlogいらない。。。

そもそもgit pull ではなく

$ git pull --rebase

を使う。
もし、git pull だけしちゃって、「git pull --rebaseにすればよかったーーーうわーーー」ってなった場合、
git reset --hard ORIG_HEAD で戻してしまってから git pull --rebase すれば良い。

 

  • 歴史を戻す

履歴確認

$ git log

戻したいcommitのハッシュ値をメモ。以下どっちかのコマンドをうつ

$ git reset --soft ハッシュ値
or
$ git reset --hard ハッシュ値

※ softとhardの違い

【soft】

ハッシュ値のcommitに状態を戻した時、

◯ 戻されたcommitたちの差分はgit add した状態になる

◯ modify状態になっていたファイルはそのまま

◯ gitの管理下になっていないファイルはそのまま

【hard】

ハッシュ値のcommitに状態を戻した時、

◯ 戻されたcommitたちの差分は消える

◯ modify状態になっていたファイルは消える

◯ gitの管理下になっていないファイルはそのまま

なので注意