Edited at

さっきの取り消したい!って時のGitコマンドまとめ

More than 3 years have passed since last update.

ありがちなgitの失敗とその修正コマンドをまとめました。(´﹃`)


masterブランチで作業を始めてしまった! Σ(ll゚艸゚ll)

git stash をすると、stashリストに書きかけのソースが退避して登録される。

なので、git statusとしても"nothing got commit"となり、変更が隠される。

ちなみにstashはこっそりしまう、という意味。

git stash list とすると、退避されているソースのリストが表示される。

コードを持っていきたいブランチに切り替えて、

git stash apply とすると、最後にstashされたものがそのブランチで反映される。

直前のソースではなく、特定のstashしたソースを指定したい場合は、

git stash apply stash@{[git stash listで確認した番号]}とすると、適用できる。

べつにmasterブランチじゃなくても、commitもaddもしていない状態で別のブランチに作業内容を移動したいよ、という時におすすめ。

くわしくは http://sessan.hatenablog.com/entry/2014/02/06/100935


含めたかったファイルを入れずにコミットしてしまった ( ◠‿◠ )

git commit --amend

amendは修正という意味。



直前のコミットでa.textをコミットしていたが、b.textも含めたかった。

git add b.text

をした後、git commit --amend で直前のコミットをやり直すと、2つのファイルが含まれている


間違ったコミットをしてしまった ( ・ὢ・ )

①git reset


  • git reset --soft :ワークディレクトリの内容はそのままでコミットだけを取り消す。

  • git reset --hard :コミットを取り消し&ワークディレクトリの内容も書き換え。




  •  直前の間違ったコミットを取り消したい。

     git reset --soft HEAD^

    (HEAD^は直前のコミットを表す)


くわしくは

http://d.hatena.ne.jp/mrgoofy33/20100910/1284069468

 ②git revert

 間違ったコミットによって加えられた変更を元に戻す方法を見出してその結果を新しいコミットとして追加することができる。

 alt



  •   git revert HEAD~2
      とすると、二個前のコミットのみをなかったことにできる。git resetだと変更履歴は残らないし、指定したバージョン以降のコミットが全てなくなるが、revertなら特定のバージョンが指定でき、変更履歴は残る。


間違ったファイルをaddしてしまった (・ε・`)

ときもgit resetが使える。



  • git add . としたらdatabase.ymlを間違えてaddしてしまった。
    git reset HEAD でadd前の状態に戻れる。
    他のaddを取り消したくないときは、
    git rm --cached config/database.yml(ファイルパス)
    でOK.

くわしくは

http://youngforever.hatenablog.com/entry/2012/10/27/225026


間違えてpushしてしまった (;´༎ຶД༎ຶ`)

git rebase -i コミット指定



  •  直前の2つのコミットを修正したいとき
     git rebase -i HEAD~2
     
     こうするとテキストエディタが開いて、HEADからHEAD~~までのコミットが次のように表示される。
     
     pick 9a54fd4 コミットメッセージ、直前のコミットのその前のやつ
    pick 0d4a808 コミットメッセージ、直前のコミットのやつ

ここから取り消したいコミットを削除して保存する。

そして、もう一回pushし直す。ふつうにpushするとエラーになるので、

git push -f で強制オプションつきでpushすることに注意。

くわしくは

http://blog.toshimaru.net/git-pushgithub/


別のブランチからコミットしてしまった =͟͟͞͞⊂( ’ω’ )=͟͟͞͞⊃ ボボッ

cherry-pick

予定していたブランチに移動、

* git cherry-pick コミット番号 

で取って来れる。


やたらこまごまコミットしてしまった、まとめたい ヽ( ε∀ε )ノ

rebase -i でコミットをまとめる

git rebase -i HEAD~~(どこまで遡るか指定。この場合は~ふたつなので直前の2つのコミットまで。)

とするとテキストエディタが開いて、HEADからHEAD~~までのコミットが次のように表示される。

pick 9a54fd4 コミットメッセージ、直前のコミットのその前のやつ

pick 0d4a808 コミットメッセージ、直前のコミットのやつ







ここで二行目のpickをsquashにして保存・終了する。すると、まとめた後のコミットに設定するコミットメッセージを編集するためのエディタが表示されるので、編集して保存・終了。そうするとふたつのコミットがまとめられる。

くわしくは

http://www.backlog.jp/git-guide/stepup/stepup7_5.html