GIT: so erzwingen Sie einen merge-commit zu einem übergeordneten

Im GIT, habe ich zwei Filialen und zwei commits:

 A(master)---B(branch "topic")
  • der LEITER der branch 'master' ist ein commit für Eine
  • der LEITER der Niederlassung 'Thema' ist commit B
  • Begehen, Ein Eltern-commit B

Ich würde gern ein merge-commit C, die in der "Thema" - Zweig (es hätte A und B als Eltern). (Ich weiß, dass das komisch wirkt und dass der merge-commit leer wäre.)

 A(master)---B---C (branch "topic")
  \-------------/

Habe ich es geschafft diese zu erstellen merge-commit in eine zu komplexe Art und Weise (siehe unten). Gibt es eine einfachere Möglichkeit, diese zu erstellen merge-commit?

Dank für Eure Antworten!


Ausgangszustand:

$ git init plop
Initialized empty Git repository in /tmp/plop/.git/
$ cd plop/
$ git commit -m "Initial commit (commit A)"  --allow-empty
[master (root-commit) a687d4e] Initial commit (commit A)
$ git checkout -b topic
Switched to a new branch 'topic'
$ git commit -m "Some work on my topic branch (commit B)" --allow-empty
[topic d4d1c71] Some work on my topic branch (commit B)
$ #OK, we now reached the initial state

Einige versucht:

$ git merge master #Does not work
Already up-to-date.
$ git merge --no-ff -s ours master #Does not work
Already up-to-date.

Gibt es ein einfacher Weg, um Folgendes zu erreichen?

$ #Let's try another way (too complex!)
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff topic
Already up-to-date!
Merge made by recursive.
$ git checkout topic
Switched to branch 'topic'
$ git merge master
Updating d4d1c71..641e7ae
Fast-forward
$ git checkout master
Switched to branch 'master'
$ git reset --hard HEAD^1
HEAD is now at a687d4e Initial commit
$ git checkout topic
Switched to branch 'topic'
$ git log #This is what I wanted to reach
commit 641e7aeb614d9b49796e8f11abd3a0290ac08b40
Merge: a687d4e d4d1c71
Author: xxx <yyy.zzz>
Date:   Sat Jul 23 12:52:41 2011 +0200

    Merge branch 'topic'

commit d4d1c71c87b94335c8852ab7675cbb663965ef7d
Author: xxx <yyy.zzz>
Date:   Sat Jul 23 12:50:11 2011 +0200

    Some work on my topic branch (commit B)

commit a687d4eb88b9f6d661122a5766dd632dd462fbaa
Author: xxx <yyy.zzz>
Date:   Sat Jul 23 12:49:52 2011 +0200

    Initial commit (commit A)
  • Warum wollen Sie das tun? Es macht keinen Sinn. Erstellen Sie einen neuen commit auf master würde verschmelzen in topic möglich wäre (und es auch macht Sinn).
  • Hier ist ein möglicher Anwendungsfall für die Zusammenführung und Vorfahren verpflichtet: Stell dir vor, der Zweig enthält einige änderungen an einer Datei (- e. g. es ist eine Art von downstream branch), in der wir jetzt zurückkehren möchten. Doing eine einfache git revert macht git blame nach diesem Attribut werden alle zurückgesetzt Linien, um die revert-commit, aber es wäre eher hilfreich, Sie zu haben, zurückzuführen auf den upstream. Macht einen revert commit " - und markieren es als ein verschmelzen mit dem upstream erreicht dies.
  • gute Frage. hier ist ein Beispiel, warum Sie wollen, zu tun, denn jeder Fragen "WARUM". Ich habe eine gh-pages Niederlassung, die über eine integrierte Google docs und dist/prod Dateien, die überprüft werden-in nur auf die Branche, bedeutete für die Bereitstellung. Meine dev - Filiale wurde vor master, und ich verschmolzen dev -> gh-pages und wieder aufgebaut und dann eingesetzt. aber dann merkte ich, dass ich F würde, weil ich möchte, dass meine master-build bereitgestellt werden, nicht meine Entwicklung zu bauen. Also ich checkout gh-pages und versucht merge --no-commit master aber es alerts "Bereits up-to-date." Zwingt einen downstream (leer) merge wäre hilfreich in dieser situation.
InformationsquelleAutor OLU | 2011-07-24
Schreibe einen Kommentar