860
732

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2013-11-21

(追記)すごくいいねがついていますが、コメントで皆さんが提案してくださっている方法の方が簡単なのでおすすめです。コメント欄を参照してください。

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

間違えて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) 作業開始地点

きれいになりました。

参考

860
732
8

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
860
732

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?