あなたがやりたいことは、develop
から新しいブランチを作成することmaster
と、最初にコミットを挿入する方法、他のすべてをシフトする方法のこの答えの組み合わせであるように思えますか?。
次のような履歴があるとします。
$ git --version
git version 1.7.9.rc2.1.g69204
$ git log --oneline --decorate --all
3047e68 (HEAD, master) D
d5b5fdb C
4a26775 B
c53013b A
2a984b8 initial
develop
ブランチから新しいブランチを作成しますmaster
。
$ git branch develop
$ git log --oneline --decorate --all
3047e68 (HEAD, master, develop) D
d5b5fdb C
4a26775 B
c53013b A
2a984b8 initial
新しい初期コミットを作成し、好きなように設定します。
$ git symbolic-ref HEAD refs/heads/newroot
$ git rm --cached -r .
$ git add README.md
$ git clean -f -d
$ git commit -m 'new initial'
$ git log --oneline --decorate --all
8b9881c (HEAD, newroot) new initial
3047e68 (master, develop) D
d5b5fdb C
4a26775 B
c53013b A
2a984b8 initial
次にnewroot
、ブランチを作成し、新しいイニシャルがブランチdevelop
をコミットします。master
$ git rebase --onto newroot newroot develop
$ git branch -d newroot
$ git log --oneline --decorate --all
3d589b6 (HEAD, develop) D
f6a83da C
6c8bdc9 B
f8dd99f A
79706b0 initial
8b9881c new initial
3047e68 (master) D
d5b5fdb C
4a26775 B
c53013b A
2a984b8 initial
さて、あなたが既存のmaster
履歴を取り除き、new initial
コミットをしたいと確信した後、:master
HEAD
$ git reset --hard 8b9881c
HEAD is now at 8b9881c new initial
$ git log --oneline --decorate --all
3d589b6 (develop) D
f6a83da C
6c8bdc9 B
f8dd99f A
79706b0 initial
8b9881c (HEAD, master) new initial
そして、develop
ブランチが安定して準備ができているときmaster
:
$ git checkout master
$ git merge --no-ff develop
$ git log --oneline --graph --decorate --all
* e8a5c32 (HEAD, master) Merge branch 'develop'
|\
| * 3d589b6 (develop) D
| * f6a83da C
| * 6c8bdc9 B
| * f8dd99f A
| * 79706b0 initial
|/
* 8b9881c new initial