0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Day16:個人サイト作成で便利だったgitコマンド(git stash)

Posted at

本記事の概要

Hugo+Blowfishテーマで個人サイトを作っていた際にgit stashコマンドが便利だったので使い方などを残しておきます。

前提

Hugo+Blowfishテーマ適用済みの環境です。
なお、Windowsでの操作を想定しています。
(本記事が属するアドベントカレンダーについてもご確認ください)

こんなことありませんか?

ブランチデプロイ機能を使うために開発用ブランチへ変更を入れたかったのだけど、
ブランチをチェックアウトする前にファイルを更新してしまうことありませんか?

「一度ファイルを退避させて、ブランチに切り替えてまた手動でマージする」というのは面倒ですよね。

この場合、git stashコマンドが使えます。

git stashコマンドを使うことで、変更を一時的に退避して、その後に開発用ブランチに切り替えてからマージすることが出来ます。

変更の退避方法

「変更してあるがコミットしていない状態」だとします。
以下のようにgit stashコマンドを打ってみましょう。

変更の退避方法
 git stash -u

上記コマンドを打つと、コミット前の変更が取り消され、git内の退避領域に変更が退避されます。

退避した変更の確認方法

下記のように git stash listコマンドで確認できます。

退避した変更の確認方法
git stash list

退避すると、下記のように表示されます。
※コミットIDとメッセージは加工しています。実際に打つと、対応するベースのコミットIDとメッセージになります。

退避結果の例
git stash list
stash@{0}: WIP on master: (コミットID) (コミットメッセージ)

注意点:ブランチの確認

退避した変更を反映する前に、必ず現在のブランチを確認しましょう。

下記のように、git branchコマンドで現在のブランチを確認できます。

ブランチの確認
git branch

さて、git stashコマンドによって変更を退避しているため、現在チェックアウトしているブランチには一切変更を加えていない状態になっています。

なので、安心して変更を加えたいブランチをチェックアウトできます。
git checkoutコマンドで正しいブランチをチェックアウトしましょう。
(不安であればチェックアウト後にもう一度確認するのもありです)

ブランチのチェックアウト
 git checkout (ブランチ名)

退避した変更の反映

下記のようにしてgit stash popコマンドで反映できます。

ブランチのチェックアウト
git stash pop 

複数の変更を退避している場合は、最新の変更が取り出されます。

popで退避した変更が消えていることの確認

popすることで退避した変更は削除されます。
もう一度、git stash listコマンドで確認してみましょう。
何も出力されていなければ、退避した領域に登録されていないことになります。
※下記の例では作業用ディレクトリのパスを加工しています。

退避結果の例
PS (作業用ディレクトリ)> git stash list
PS (作業用ディレクトリ)> 

もう一つ大事なこと

正しいブランチに変更を反映した後は、commitやpushを適宜行うようにしましょう。

まとめ

git stashコマンドを利用することで、変更を一時的に退避して反映させることが出来ます。

そもそもの話として、今自分が作業しているブランチを確認することが重要です。

もし、誤って違うブランチで作業していたことに気付いた際は、git stashコマンドで出来るだけ早く退避させるようにしましょう。

そうすることで手戻りを最小化できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?