Ich habe ein Repo myrepo
auf dem Remote- beanstalk
Server aufgerufen .
Ich habe es auf meinen lokalen Computer geklont. Erstellt zwei zusätzliche Zweige: staging
und dev
. Schob diese Zweige auch auf Remote.
Jetzt:
local remote server
--------------------------------------------------------
master ==> Pushes to `master` ==> deployed to `prod`
staging ==> Pushes to `staging` ==> deployed to `staging`
dev ==> Pushes to `dev` ==> deployed to `dev`
Ich habe eine Datei namens, config.xml
die in jedem Zweig anders ist.
Ich möchte diese Datei nur beim Zusammenführen ignorieren. Ich möchte jedoch, dass dies beim Auschecken oder Festschreiben von / zum Repo-Zweig berücksichtigt wird.
Der Grund, warum ich dies möchte, ist, dass wir ein Bereitstellungsskript haben, das den spezifischen Zweig abruft (auscheckt) und auf den jeweiligen Servern bereitstellt. Daher muss die config.xml
Datei dieses bestimmten Zweigs bei der Bereitstellung wie oben angegeben auf dem jeweiligen Server gespeichert werden.
Ich denke, es wird .gitignore
nicht funktionieren. Was sind die anderen Optionen? Beachten Sie, dass die ignorierte Datei Teil des Auscheckens und Festschreibens sein sollte, was wichtig ist. Es sollte nur bei Zusammenführungen ignoriert werden.
Vielen Dank!
Antworten:
Ich habe dieses Problem behoben, indem ich den Befehl git merge mit der
--no-commit
Option verwendet und dann die bereitgestellte Datei explizit entfernt und die Änderungen an der Datei ignoriert habe. Beispiel: Angenommen, ich möchte alle Änderungen ignorieren.myfile.txt
Ich gehe wie folgt vor:Sie können die Anweisungen 2 und 3 in eine for-Schleife einfügen, wenn Sie eine Liste der zu überspringenden Dateien haben.
quelle
git reset HEAD myfile.txt
genau? Wie hilft es bei unserem Ziel hier?Am Ende fand ich Schwachkopf
attributes
. Ich versuche es. Bisher arbeiten. Hat noch nicht alle Szenarien überprüft. Aber es sollte die Lösung sein.Strategien zusammenführen - Git-Attribute
quelle
.gitattributes
- ist eine Root-Datei Ihres Repositorys, die die Attribute für ein Unterverzeichnis oder eine Teilmenge von Dateien definiert.Sie können das Attribut angeben, mit dem Git angewiesen wird, verschiedene Zusammenführungsstrategien für eine bestimmte Datei zu verwenden. Hier wollen wir das Bestehende
config.xml
für unsere Branche erhalten. Wir müssen dasmerge=ours
inconfig.xml
in.gitattributes
Datei setzen.merge=ours
Weisen Sie git an, unsere (aktuelle Zweig-) Datei zu verwenden, wenn ein Zusammenführungskonflikt auftritt.Fügen Sie eine
.gitattributes
Datei auf der Stammebene des Repositorys hinzuSie können ein Attribut für confix.xml in einer
.gitattributes
Datei einrichtenUnd dann definieren Sie eine Dummy-Strategie für unsere Zusammenführung mit:
Wenn Sie den
stag
Formularzweig zusammenführendev
, wird die Datei config.xml des Hirschzweigs in der ursprünglichen Version beibehalten, anstatt dass die Zusammenführung mit der Datei config.xml in Konflikt steht.quelle
config.xml
es von der Merge-Basis zu einer der Zweig-Tip-Versionen völlig unverändert ist , nimmt Git nur die geänderte Version ohne Blick auf diemerge.ours.driver
Einstellung. Sie haben also Recht, besorgt zu sein.theirs
es sich um eine integrierte Zusammenführungsstrategie handelt. Aber es scheint, dass man dann schreiben<pattern> merge=foo
kanngit config --global merge.foo.driver true
, und es wird genauso funktionieren.Sie können zunächst
git merge --no-commit
die Zusammenführung verwenden und dann bearbeiten, wie Sie möchtenconfig.xml
, z. B. durch Aufheben der Bereitstellung oder einer anderen Datei, und dann festschreiben . Ich vermute, Sie möchten es danach mithilfe von Hooks weiter automatisieren, aber ich denke, es lohnt sich, mindestens einmal manuell durchzugehen.quelle
git attributes
eine klare Lösung? Ich kann das nicht verstehen. git-scm.com/book/en/…Sie könnten nutzen
.gitignore
die haltenconfig.xml
aus dem Repository und dann verwenden , um einen Beitrag commit die entsprechende Upload -config.xml
Datei auf dem Server.quelle
attributes
. Irgendeine Idee, wie es funktioniert? Ich kann das nicht verstehen. git-scm.com/book/en/…Beispiel:
master
,develop
develop
Zweig erstellt und möchten diese beim Zusammenführen ignorierenCode:
Sie können auch Dateien mit derselben Erweiterung ignorieren
Zum Beispiel alle Dateien mit der
.txt
Erweiterung:quelle
Hier git-update-index - Registrieren Sie den Dateiinhalt im Arbeitsbaum im Index.
Beispiel:-
quelle