LoginSignup
50
57

More than 5 years have passed since last update.

git checkout できないとき、私はこうしてます。(※知ってる方法は2つ)

Last updated at Posted at 2016-04-15

git checkout master

masterに限らない話ですが、
ブランチを切り替える時に下記エラーが出て切り替えられないことがあります。

error: Your local changes to the following files would be overwritten by checkout:
    abc.txt
    hogehoge.ctp
Please, commit your changes or stash them before you can switch branches.
error: The following untracked working tree files would be overwritten by checkout:
    abc.txt
Please move or remove them before you can switch branches.
Aborting

そんな時はこうしています

変更履歴を スタック する

git stash save 'なんのスタックか自分がわかるメモ'

  • 変更履歴を戻すには(元のブランチに戻した時など)
    git stash pop
    ※複数回スタック(git stash)していた時は :arrow_lower_left:
    git stash list (スタックを確認)
    git stash pop [↑で確認したハッシュ値]


とりあえずコミットしておく(オススメ)

上記git stashだと思わぬハプニングでスタックが消えてしまったら
変更履歴は消えちゃいます。 (普通は無いですが...)
なのでとりあえずコミットしておきましょう。
git add -A
git commit -m '[コミットメッセージ]とりあえずのコミット!'

※プッシュしてしまわないように気をつけてください!

  • 変更履歴を戻すには(元のブランチに戻した時など)
    コミットしたブランチに戻ってから
    git reset --soft HEAD^
    git reset


今回2つの方法を紹介しました。
ですが、ちゃんとコマンドを理解して使わないと
せっかくの編集が消えちゃう可能性がありますので気をつけてください。

(追記)

2つ目の方法の続き。少し応用かもしれません。
違うブランチに変更内容を反映させたいときは、
一時的に作ったコミットを反映させたブランチにもってきてから
reset --softすればできます。

git checkout [反映させたいブランチ]
git cherry-pick [一時的に作ったコミットのハッシュ値]
git reset --soft
git reset



:smiley: 過去に書いた Git関連の記事 :arrow_double_down:

Qiita-何も知らない人がGitとGitHubを独学で知る
Qiita-プルリクエストで表示される差分の仕組みを GitHub に問い合わせたときの話
Qiita-ブランチ間の差分をコミット単位で知る・見る
Qiita-git 差分を見る

50
57
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
50
57