Help us understand the problem. What is going on with this article?

作業ブランチを間違えて作業していたときの解決方法

この記事を書くまでの経緯

コードを書き終わり、「さあプッシュしよ!」ってときにふと気づきました。

「あれ?作業ブランチ間違えてない?」

ということで、ブランチを間違えて作業していたときの解決方法です。

はやくgitに慣れたいです。

解決方法

ブランチ間違えた!って気づいてgit checkoutでブランチを変えようとしても、「編集したファイルがあるよ!commitかstashしてからブランチ変えて!」とエラーが出ます。

なので、解決方法としてとりあえず今のブランチでコミットを行い、それからブランチを移動して、コミットをその移動したブランチに移すという方法をとります。

(もっとこうした方がいいよ!という方法がありましたらコメントいただけたら嬉しいです…)

ちなみにエラー文はこんな感じ。

error: Your local changes to the following files would be overwritten by checkout:
        templates/index.html
        templates/show.html
Please commit your changes or stash them before you switch branches.
Aborting

ということで、まずはブランチは変えずにそのままコミットしましょう。

以下のコマンドでいつもの手順でコミットまでやってみてください。

$ git status
$ git add .
git commit -m "コミット名”

コミット名はブランチ移動後もここで設定したものにになるのでブランチ移動後につけようと思っているものをつけてください。

そして、ここでgit logしてcommit履歴を見ましょう。

$ git log

すると、これまでのコミット履歴が見れます。

今一番上に、今のブランチでcommitしているものがあるはずなので、そのcommit idをコピーしておいてください。

ちなみにcommmit idは

commit 46aaakvu493512d86282yfqebflugwq88a46f2a1

みたいなところのcommit以降の部分になります。

ということで46aaakvu493512d86282yfqebflugwq88a46f2a1をコピー。

(ちなみにgit bashだとショートカットキーでコピーできないので注意。忘れずに右クリックしましょう.)

コピーができたらブランチを移動します。

すでに移動したいブランチを作っている場合は以下のコマンドを打ちましょう。

$ git checkout ブランチ名

まだブランチを作っていない方は以下のコマンドを打ちましょう。

$ git checkout -b ブランチ名

そして、今回の山場、コミットの移動です。

ここで先ほどコピーしておいたコミットidを使い、以下のコマンドを叩きましょう。

$ git cherry-pick コミットid

これで正しいブランチにコミットしたことになりました。

ちなみにこのコマンドはコミットのブランチを移すのをチェリーを採ることに例えているらしいです。かわいい。

ということで、最後にちゃんと正しいブランチにコミットできているか確認しましょう。

$ git log

一番上に正しいコミット履歴があるはずです。

これで完全犯罪が完了しました。

~完~

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away