Es klingt wie, was Sie tun möchten eine Kombination des Erstellens einer neuen develop
Verzweigung von master
und this answer für How to insert a commit as the first, shifting all the others?.
Angenommen, Sie haben eine Geschichte wie folgt aus:
$ 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
Erstellen Sie einen neuen develop
Zweig vom master
Zweig:
$ git branch develop
$ git log --oneline --decorate --all
3047e68 (HEAD, master, develop) D
d5b5fdb C
4a26775 B
c53013b A
2a984b8 initial
Erstellen einer neuen Anfangs begehen und es einrichten, wie Sie möchten :
$ 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
Jetzt machen newroot
der develop
Zweig und die neuen Anfangs verpflichten, die master
Zweig:
$ 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
Jetzt, nachdem Sie sicher sind Sie der bestehenden master
Geschichte loswerden wollen und machen die new initial
master
‚s begehen 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
und wenn der develop
Zweig ist stabil und bereit für 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
Das ergibt keinen Sinn. Können Sie erklären, was Sie erreichen wollen, indem Sie Ihren "Master" Zweig ausblenden? Das hat nichts damit zu tun, es stabil zu machen, es macht es einfach leer und nutzlos. Ich bin auch verwirrt, was Sie mit "lang laufenden" Zweigen meinen. Der Master sollte der * längste * laufende Zweig sein. Per Konvention sollte es der einzige Zweig sein, der immer in der Geschichte Ihres Projekts existiert. – meagar
@meagar Ich denke, ich habe erklärt, was ich will: * Meister sollte kein langlaufender Zweig sein. Wie andere denke ich, dass die Master-Branche immer das stabile Produkt hält. Mit * long running * meinte ich Entwicklungszweig. – tugberk
Der Zweig * master * kann und sollte das stabile Produkt enthalten, aber das bedeutet (wie gesagt), dass es der * am längsten laufende Zweig * sein sollte. Es sollte immer existieren, während Ihre Entwicklungs- und Feature-Zweige verschmelzen und verzweigen und verschwinden. – meagar