Git - Stashingの手抜き翻訳かつ、勝手に構成や説明の流れを変えたものです。
間違ってmasterブランチなどで実装を始めたのに途中で気づいて、開発用のdevelopmentブランチにその書きかけのソースをコミットすることなく持って行きたいときは、git stashを使う。
書きかけだとgit statusとしたときに色々でるはず。
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: index.html # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # # modified: lib/simplegit.rb #
書きかけのソースをコミットせずに、以下のコマンドを入力する。
$ git stash
そうすると、一時フォルダ的なstashリストに書きかけだったソースが退避されて登録されるので、git statusも以下のようになる。
$ git status # On branch master nothing to commit (working directory clean)
今退避されているソースのリストは、git stash listコマンドで確認できる。
$ git stash list $ git stash list stash@{0}: WIP on master: 049d078 added the index file stash@{1}: WIP on master: c264051... Revert "added file_size" stash@{2}: WIP on master: 21d80a5... added number to log
この状態でコードを持って行きたい適当なブランチに切り替える。
ブランチの切り替え方はgitのローカルbranchを作成し、リモートにpushする - sessanの日記参照。
ブランチを切り替えた後、最後にstashしたものを反映したい場合は、
$ git stash apply
とする。
特定のstashリストを指定して反映したい場合は、
$ git stash apply stash@{2}
のように、stash listで表示されていた名前を指定してapplyする。