2012-04-11 4 views
3

Ich habe ein Problem mit GitHub.Wie ignoriert man Dateien und Ordner mit Pull-Requests an GitHub in verschiedenen Git Clones Installationen?

Ich verwende das Remote-Repository auf GitHub, um eine Kopie auf einen Server herunterzuladen, um eine Installation einer Software vorzunehmen, aber jeder Server muss einige Änderungen an einer Datei mit dem Namen /www/inc/config.inc.php vornehmen, da jede Installation personalisiert ist.

Das Problem kommt, wenn ich den Befehl „git pull“ rufe die verschiedenen Server-Installationen mit GitHub synchronisieren die neuen Änderungen oder Versionen zu erhalten, da die Datei www/inc/config.inc.php wechselt sie in dem ursprünglichen Inhalt ist, oder eine, die auf GitHub befindet .
Ich würde sagen, GitHub nicht die Datei und den /www/images Ordner auf jedem Server zu synchronisieren, die ich ursprünglich ausgeführt git clone Befehl, um eine neue Installation zu machen.

Antwort

2

Ich möchte zuerst Ihr Problem neu formulieren, um sicherzustellen, dass ich es richtig verstehe.

Sie haben Server, auf denen Installationen ausgeführt oder aktualisiert werden müssen, wenn sie vorhanden sind. Sie haben die Installationsdateien auf GitHub.

Bei Neuinstallationen klonen Sie von Github und ändern dann die Datei /www/inc/config.inc.php und den Ordner/www/images.

Wenn Sie Aktualisierungen durchführen, geben Sie diese Aktualisierungen an github weiter. Anschließend möchten Sie diese Aktualisierungen von github auf Ihre verschiedenen Server übertragen, möchten jedoch die lokalen Änderungen nicht zusammenführen oder überschreiben.

Bitte kommentieren Sie, wenn das Szenario falsch ist.

die oben Unter der Annahme richtig ist, hier ist ein Ansatz, um dies zu erreichen:

Wenn Sie zuerst die Repo auf dem lokalen Server klonen, einen Zweig erstellen, bevor Sie Ihre lokalen Änderungen vornehmen. Behalten Sie das lokale Repo immer in der von Ihnen erstellten Filiale.

#clone the repo 
git clone git://github.com/you/yourproject.git 

#create and checkout a local working branch 
git checkout -b workingBranch 

#make your changes to configs and other directories freely 
... 
#when you're done, add and commit those changes 
git add . 
git commit 

Wenn Sie ein Update Sie

#checkout the master branch 
git checkout master 

#pull to get the latest code 
git pull origin master 

#checkout the workingBranch again 
git checkout workingBranch 

#rebase to get the new changes on that branch 
git rebase master 

Diese vorübergehend rollen wieder die Änderungen an der lokalen Maschine ziehen möchten, die Sie auf Ihre Branche aus, die neuesten Commits aus dem Master-Zweig erhalten, und dann "wiederholen" Sie Ihre Commits über die neuen Änderungen.

0

Sofern Sie nicht beabsichtigen, Änderungen direkt in der Live-Server-Struktur vorzunehmen (/www), übertragen Sie sie und schieben Sie sie zurück, Sie müssen nicht direkt von /www ziehen.
Ie brauchen Sie nicht /www, um ein Git Repo zu sein.

Sie können einen Klon dieses Repos auf Ihrem Server abrufen und dann rsync, was Sie in Ihrer Live-Umgebung (noch auf Ihrem Server) benötigen.
Mit anderen Worten, Sie halten eine strikte Trennung zwischen dem Git Repo und dem Live-Baum.
Auf diese Weise steuern Sie genau was Sie aktualisieren müssen.

Verwandte Themen