Update Feb. 2021: Git selbst ist immer noch nicht gut geeignet, aber GitHub Action-Umgebung könnte helfen .
2009: Ich bin mir nicht sicher, ob Git für diese Art der Verwendung gedacht ist.
Zunächst eine kurze Linus-Ratschläge , immer "bunt" und informativ ;)
Git très verfolgt grundsätzlich den Projektstatus, nicht den Dateistatus. Das bedeutet, dass Sie auf keinen Fall versuchen können, eine Datei zusammenzuführen. Es ist eine sinnlose Operation in Git, und in der Tat ist jedes SCM, das dies erlaubt, dazu verdammt, ein totales Stück Scheiße zu sein (*).
(*) Und das sage ich nicht nur, weil Git das nicht tut. Es ist viel grundlegender als das. Sobald man anfängt, pro Datei zu verzweigen und zusammenzuführen, hat man sich im Grunde selbst in die Pfanne gehauen und wird nie mehr in der Lage sein, an dem Projekt als "ganzes Projekt" zu arbeiten - man hat keine wohldefinierte Geschichte mehr, die tatsächlich die Geschichte des ganzen Projekts ist.
Dort.
Das heißt, Sie könnten:
- diese Konfigurations-/Doku-Dateien in einem separaten Git-Unterprojekt verwalten (Anmerkung: die Die Verwendung von Untermodulen wurde hier erörtert )
- oder eine teilweise Zusammenführung aufzeichnen (mit der Strategie "unsere" für Dateien, die wir nicht zusammenführen wollen), dann --ändern.
Andere Lösungen in diesem Thread beinhalten die Arbeit an einer "serverspezifischen" Verzweigung auf Ihrem Bereitstellungsserver
Development Deployment
#origin/master:
x--x $ git clone
# master
x--x
$ git checkout -b deployment origin/master
x--x
\
-- #deployment
$ .... #makes changes for config files
#or other specific deployment files
x--x
\
--d1--d2 # no need to push that branch ever.
#new developments
x--x--x--x
$ git pull --rebase #pull origin/master and
#replay current branch on top of it
x--x--x--x
\
--d1'--d2' #SHA1 rewritten in deployment branch
#not important since this branch
#is not pushed (published)