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

Gitでブランチを作るのを忘れてmasterにコミットしてしまったときの対処法

More than 5 years have passed since last update.

通常ブランチを作ってからブランチを切り替えて実装を始めますが、たまにはうっかりブランチを作るのを忘れてしまうことありますよね。
そんなときの対処法のメモです。要は新しく作った別のブランチにコミットを移動する方法です。

間違えて3つmasterにコミットしてしまっている状態で、新しくbranch01ブランチを作ってそこに移すというシナリオで書いていきます。

branch01ブランチを作る

ブランチを作るべきだった位置からブランチを作る

$ git branch branch01 origin/master

origin/masterのところはコミット番号でも構いません。

branch01ブランチに切り替え

$ git checkout branch01

branch01ブランチに移動したいコミットをコピー

コミット番号を調べる

$ git log --oneline --decorate --graph master
* m000003 (master) なんか修正3
* m000002 なんか修正2
* m000001 なんか修正1
* m000000 (origin/master, origin/HEAD) 作業開始地点

m000001からm000003までの3コミットがbranch01に移したいコミットとします。

branch01ブランチに移したいコミットをcherry-pickコマンドでコピー

$ git cherry-pick m000001 
$ git cherry-pick m000002
$ git cherry-pick m000003 

確認

$ git log --oneline --decorate --graph master branch01
* b000003 (HEAD, branch01) なんか修正3
* b000002 なんか修正2
* b000001 なんか修正1
| * m000003 (master) なんか修正3
| * m000002 なんか修正2
| * m000001 なんか修正1
|/  
* m000000 (origin/master, origin/HEAD) 作業開始地点

branch01ブランチにコピーできてる。
コミット番号は新しく振られます。

masterから移したコミットを削除する

masterに切り替える

$ git checkout master

コミットを3つ削除する

$ git reset --hard HEAD~3

HEAD is now at m000000 作業開始地点

HEAD~3は戻す数によって変えてください。

確認

$ git log --oneline --decorate --graph master branch01
* b000003 (branch01) なんか修正3
* b000002 なんか修正2
* b000001 なんか修正1
* m000000 (HEAD, origin/master, origin/HEAD, master) 作業開始地点

きれいになりました。

参考

atskimura
株式会社co-meeetingのCEO。最近はSalesforce上で動くアプリを作ってます。コピペテックはじめました😀
http://www.co-meeting.co.jp/
co-meeting
株式会社co-meetingでは、創業以来スローガンである「Happy Work! Happy Life!」を掲げ、世界中の「働く人」の人生を豊かにするソフトウェアサービスを開発・提供することを目標とすると同時に、社員みんなが楽しく充実した仕事ができる会社を目指しています。
https://www.co-meeting.co.jp
Why not register and get more from Qiita?
  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
No 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
ユーザーは見つかりませんでした