2013-01-16 2 views
5

Ich habe ein Entwicklungs-Repository und ein Deploy-Repository. Bei der Bereitstellung von Code wird eine Codebase aus dev, rsync auf die Bereitstellungskopie überprüft und in das Bereitstellungsrepository übernommen. Diese Repositories sind daher getrennt, aber ähnlich.Diff zwischen zwei Git-Verzweigungen verschmelzen und auf die Arbeitskopie anwenden

Auf dev, ich habe einen Zweig. Ich möchte diesen Zweig auf die Bereitstellungskopie "anwenden". Mit anderen Worten, ich möchte alle Commits in der Verzweigung (außer Zusammenführungen) in das Deploy-Repository zurückspeichern (wenn möglich in einem Commit) oder einen Unterschied zwischen Branch und Master übernehmen und auf die bereitgestellte Arbeitskopie anwenden.

denke ich, ein ähnlicher svn Befehl wäre:

svn merge $SVN_REPO/trunk $SVN_REPO/branch/dev_branch deploy_dir 

... wo deploy_dir nicht einmal benötigt eine Arbeitskopie sein.

Ist das möglich?

+1

Fügen Sie einfach eine andere Remote-Repository und regelmäßige Zusammenführung durchführen ? – zerkms

+0

Es gibt einige Repository-Anomalien, die dies komplizieren, einschließlich einer fehlerhaften Rebase. Wenn Sie eine reguläre Zusammenführung versuchen, kommt es bei fast jeder Datei zu Konflikten. –

Antwort

9

Eine Möglichkeit ist, den Zweig von der anderen Repo zu holen:

cd <deploy-path> 
git remote add devel <devel-path> 
git fetch devel 

git cherry-pick devel/master...devel/branch # Assuming your branch is based on master 

Eine andere Möglichkeit ist es, einen Patch zu erstellen und es dann gelten:

git diff commitid1 commitid2 > something.patch 
cd deploy 
git apply something.patch 
+0

Die Diff/Patch-Methode funktionierte perfekt, weil es einige Anomalien gab, die ich ignorieren wollte. Da einige Bilder hinzugefügt wurden, habe ich git diff --binary c1 c2> something.patch –

+0

verwendet. Es ist auch interessant, dass es kein "git merge --ignore-ancestry" oder etwas Ähnliches wie oben im svn-Befehl gibt. –

+0

@Tim Yeah, Zusammenführung funktioniert nicht. Sie sollten stattdessen versuchen, Kirschen zu pflücken. – nishantjr

Verwandte Themen