Skip to content

Instantly share code, notes, and snippets.

@koudaiii koudaiii/git-steash.md
Last active Sep 5, 2019

Embed
What would you like to do?
間違って別のブランチで実装を始めちゃった時にgit stashで別ブランチに編集中のソースを移動する

間違って別のブランチで実装を始めちゃった時にgit stashで別ブランチに編集中のソースを移動する

  • git
  • 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
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する。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.