git のある生活

git はおれの嫁 ( ないと生きていけない的な意味で ) 。まだ以下で足りてる感じ。最近 git のまとめが多いけど実際に自分でまとめないとわからなくなりそうというだけ。

  • git init / git clone <repository>
  • 新しく file を作った場合
    1. git add <filename>
    2. git commit
  • 既存 file の編集のみの場合
    • git commit -a
  • さっきまでの変更をなかったことにしたい場合
    • git checkout -- <filename> ( 個別に file 指定 )
    • git reset --hard HEAD ( 変更すべてを一気に )
  • 直前の commit を失敗した場合 ( add を忘れたとか commit message ミスったとか )
    • git reset --soft HEAD^
  • 変更は残したまま commit をなかったことにしたい場合
    • git reset <committish>
  • 変更ごと commit をなかったことにしたい場合
    • git reset --hard <committish>
  • ある程度 commit を連続してやってからはじめのほうの commit miss に気付いてしまった場合 ( 以下の例はたとえば 3 つ前の commit を間違った場合 )
    1. git format-patch HEAD^^^
    2. git reset --hard HEAD^^^
    3. git am 0001*.patch
    4. miss 修正
    5. git commit -a
    6. git am 0002*.patch & git commit -a
    7. git am 0003*.patch & git commit -a
  • 些細な変更 ( typo level ) 以外は branch きってやるべき。 branch 名もわかりやすく変更名を書く
    • git branch <branchname> ( branch きるだけ )
    • git checkout <branchname> ( 既存 branch へ切り替える )
    • git checkout -b <branchname> ( branch きって同時に切り替えもする )
  • remote から最新の tree に更新する ( clone や手動で git remote add <repository> した場合 )
    1. git checkout master
    2. git pull
    3. git checkout <branchname>
    4. git rebase origin/master
    5. 最新の tree にしたい branch が他にもある場合同様に checkout してから rebase する
  • remote の master tree に変更を反映させる
    1. git checkout master & git merge <branchname> ( 変更を master 以外でやった場合 )
    2. git push