2009-08-18 4 views
32

Ich verwende Git, um meine Dokumentation Latexquelle zu verfolgen. Ich möchte den Masterzweig voll mit Dokumenten halten, die für die Endbenutzerfreigabe geeignet sind. Wenn also jemand etwas benötigt, kann ich einfach zum Masterzweig wechseln, das Dokument kompilieren und verteilen.Git: Zusammenführen, um Master-Dateien mit Zweig zu überschreiben

Ich mache neue Zweige, wenn ein Handbuch ein großes Update benötigt. Aber wenn das Handbuch genehmigt wird, muss es wieder in den Master zusammengeführt werden. Wenn aus Zweig in Master verschmelzenden, würde Ich mag einige Befehl Git passieren zu sagen: „das Verschmelzen vergessen, nur aus der die Datei verwenden Zweig die Datei in Master zu überschreiben.“ Gibt es eine Möglichkeit, dies zu tun? Insbesondere möchte ich vermeiden, jedes Mal ein Merge-Tool zu öffnen. Danke im Voraus.

+0

Sie können eine interaktive Zusammenführung tun und sie mit (ja) füttern, was auch immer die Antwort ist, wenn sie fragt, was zu tun ist ... –

+1

@ r-martinho-fernandes: Was ist der interaktive Zusammenführungsbefehl? –

Antwort

46

master außer Acht zu lassen, wenn Sie branch ausgecheckt haben dann:

git merge master --strategy=ours 

http://schacon.github.com/git/git-merge.html

Wie 'Computer Linguist' hier kommentiert, wird dies „alles aus 'Master' ignorieren, selbst wenn es Änderungen an neuen, unabhängigen Dateien ". Also, wenn Sie nicht das OP sind und eine sicherere Zusammenführung wollen, die nicht wie das OP sagt "Vergiss die Verschmelzung", dann benutze diesen exzellenten sicheren Befehl von 'Computer Linguist', plus seinen Kommentar, damit er Glaubwürdigkeit bekommt.

git merge -s recursive -X theirs branch 
+1

Von hier aus: http://StackOverflow.com/Questions/366860/Wenn-Sie-Sie-die-verschiedenen-Git-Meer-Strategien verwenden, sagt dies: Unser == Ich möchte einen anderen Kopf einziehen, aber werfen weg von all den Veränderungen, die der Kopf einführt. Also ist das Gegenteil von was OP wollte. – Amala

+4

Wenn Sie in der Branche sind und Sie 'git merge master --strategy = our' haben, dann behält es Branchs Änderungen bei. (was OP will) Aber wenn Sie in Meister sind und "unser" verwenden, dann behält es Meister. (gegenüber) – Robert

+4

Aus meiner Lektüre der Frage, Mica will Zweig in Meister zu fusionieren, den Zustand des Zweigs dh 'git merge Branch' auf Master zu halten, so - Strategie = unsere ist das Gegenteil von dem, was er will –

1

Ich glaube, dies zu tun mit der Strategie ‚unserer‘ merge:

git checkout branch 
git merge -s ours master 

Aber genau dies nicht tun, was Sie wollen: es, den Inhalt des aktuellen Arbeitszweiges außer Kraft setzen branch und was Sie wollen, ist der gleiche Inhalt auf master zu bekommen. Was Sie wirklich wollen, ist eine Merge-Strategie theirs, und dafür weise ich Sie auf this similar question für eine Möglichkeit, es zu tun. In der Praxis läuft es darauf hinaus, master auf branch zu setzen.

13

In Version 1.7.1 von Git können Sie "-Xtheirs" verwenden, um den Zweig selbst zusammenzuführen.

Zum Beispiel, wenn Sie in Ihrem Master-Zweig beginnen, beginnend in Master

git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git merge -Xtheirs editBranch

Eine anderen Möglichkeit, die ich gesehen habe, dies zu tun basierte weg this post ist eine Hard-Reset aus der editBranch zu tun . Zum Beispiel:

git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git reset --hard editBranch

Ich denke, diese zweite Art und Weise könnte das besser zu spielen, aber ich habe keine Chance zu spielen, um mit ihm genug noch hat.

+0

danke. Ich muss Git zu Hause aktualisieren, und überprüfen Sie dies. Sehr geschätzt. – Mica