Gitを使った分散開発管理18 – ワーキングツリーの変更を別ブランチへ反映させる

2014.08.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

作業するブランチを間違えた場合

開発用ブランチで実装していると思っていたのに、実は本番用ブランチで作業をしており、
すでにいくつかのファイルを追加したり修正したりしてしまっていた・・・。
そんなミスが(自分は)よくあります。こんなときは、変更したファイルを任意のブランチへ移行して作業を継続したいです。
今回はそういった方法について紹介。

環境

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.9.4
  • Git : 1.8.5.2

ワーキングツリーの変更を任意のブランチへ反映

ここで例を1つ。
developブランチで作業をしなければならなかったけど間違えて
masterブランチで作業をしてしまいました。作業は中途半端でコミットできる状況でもないので、
ワーキングツリーの変更を別ブランチへ適用したい状況です。
そんなときは、後述するようにstashを使えば簡単にワーキングツリーの変更を適用できます。

まずはmasterブランチで変更を一時保存(stash)します。

% git stash //masterブランチでstash

そして、developブランチへ移動し、stash popで先ほどのstash情報を取り出します。

% git checkout develop //developブランチへ移動
% git stash pop //stash情報を取り出し

これでmasterで行ったワーキングツリーの変更がdevelopに適用されました。
とりあえず作業するときは、ブランチをちゃんと確認しましょう。