ich ein paar git Fragen hier gelesen haben, aber nicht eine Antwort auf diese finden konnte:Git: Fusion öffentliche und private Zweige während, während bestimmte Dateien in beiden Zweigen intakt zu halten
ich eine öffentliche und eine Privat Zweige, in denen ich bestimmte Dateien divergieren lassen möchte.
Das sind Konfigurationsdateien mit Passwörtern und meinen lokalen Anpassungen.
Ich möchte in der Lage sein, die Zweige auf beide Arten zusammenzuführen: von privat zu öffentlich und zurück, aber ich möchte diese spezifischen Dateien nicht automatisch zusammenführen lassen.
Gibt es eine Möglichkeit, git so einzurichten? Ich würde gerne eine automatisierte Lösung finden :) - so könnte das Zusammenführen wie gewohnt erfolgen.
EDIT: hier ist die Lösung, die für mich (Danke an VonC für die Beratung auf gitattribute) arbeitete
das einzige für mich unerwartet war, dass „Schutz verschmelzen“ zu arbeiten beginnt erst nach Dateien in den beiden Zweigen abwich, nicht unmittelbar nach der folgenden Konfiguration wurde
.gitattributes angewendet (Track mit git, wenn Sie diese teilen möchten) oder .git/info/Attribute:
file1 merge=keepmine
path/file2 merge=keepmine
keepmine ist der genannte benutzerdefinierte merge-Manager, der nur ein do-nothing-Befehl anstelle den internen Merge-Treiber auf ausgewählte Dateien aufgerufen, die unter
eingerichtet ist, wenn von den privaten zur öffentlichen Zweig verschmelzenden ich in der Regel git merge --squash private
tun . Auf diese Weise werden private Bearbeitungen nicht in die öffentliche GIT-Geschichte eindringen.
.git/config:
#public repository
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = <public repo git url>
#private repository
#has to set up with git init and populated with the initial commit to branch mybranch
[remote "private"]
push = +:
url = /path/to/local/private/repo
[merge "keepmine"]
name = dont_merge_selected_files
driver = echo %O %A %B
[branch "master"]
remote = origin
merge = refs/heads/master
#private branch settings
[branch "mybranch"]
remote = private
merge = refs/heads/mybranch
, wenn es einen Weg, dies bitte zu verbessern Kommentar
das funktioniert, danke! – Evgeny
Dies funktioniert nur, wenn die Datei in beiden Zweigen geändert wird. Sobald die Zusammenführung mit keepmine aufgelöst wurde, wird die folgende Zusammenführung in der anderen Verzweigung durch recurse aufgelöst. – f3r3nc