Git: Dateien und Verzeichnisse vom merge ausschließen
-
Hallo zusammen,
ich habe ein repo mit zwei Branchen. Im Branch 1 sind die Ordner A und B enthalten, sowie die Dateien a und b. Wie erreiche ich es, dass wenn ich Branch 1 mit Branch 2 merge, er den Ordner B und Datei B ignoriert und nur A und a für den Merge berücksichtigt. Weiter will ich in 2 A und a löschen, ändern, etc. können, ohne dass dies sich auf 1 auswirkt. Jemand nen tip?
Vielen Dank
-
sucht du
git cherry-pick
?
-
hallo,
nein, das git cherry pick suche ich nicht. eigentlich soetwas wie
hier:
[url] http://stackoverflow.com/questions/5465122/gitattributes-individual-merge-strategy-for-a-file [/url]
Allerdings habe ich noch einen dritten Branch, welcher sich immer mit Branch 2 austauscht. Dies soll von dem exclude unberücksichtigt bleiben. aber so scheint es wohl direkt nicht in git zu gehen
ich will ja schon einfach sagen: git merge ..., dabei sollen aber wie gesagt bestimmte dateien einfach nicht in den zielbranch übernommen werden, da diese nur für tests notwendig sind und im master keine relevanz mehr haben. im test branch brauch ich diese aber.
-
Klingt nicht nach einem sinnvollen Workflow. In Git sind Commits die kleinste Einheit, die du bequem von Branch zu Branch übernehmen kannst.
Wenn du nur Teile eines Commits übernehmen würdest, würdest du ja de facto neue Commits generieren und wüsstest daher später dann nicht mehr, welche Commits aus einer alten Branch bereits gemerged sind.
Du kannst deine Testbranches aber per interaktivem Rebase aufräumen, um nicht irgendwelche temporäre Dateien in deine Master-Branch zu mergen.
Unit-Tests oä. hingegen solltest du einfach auch in die Master-Branch übernehmen. Keine Ahnung, was genau du versuchst, aber wenn du zB. Testcode nicht mitdeployen möchtest, dann ist das eine Sache des Deployment-Tools, nicht der Versionskontrolle. Selbiges gilt, wenn du zB. Installer baust oä.
-
na es sind messungsdaten und simulationscode, welche sozusagen weiterführend zu testsuits sind. die sollen halt nicht im master auftauchen. interaktives rebase kenne ich nicht, was geht damit?
-
öh, ignorefile?
edit: kurz was gegoogelt und überflogen
http://de.gitready.com/beginner/2009/01/19/ignoring-files.html
Meinst sowas? Oder tap ich grad danenebn.
-
_uwerothfeld schrieb:
na es sind messungsdaten und simulationscode, welche sozusagen weiterführend zu testsuits sind. die sollen halt nicht im master auftauchen.
Mach separate commits. Dann kannst du einfach mit cherry-pick die commits auswählen, die nichts mit messungsdaten zu tun haben. Wie nman schon gesagt hat, sind commits/patches halt die kleinste Einheit. Es macht normalerweise wenig Sinn, dass man dann einen Patch nach Dateien/Verzeichnissen aufteilt.
_uwerothfeld schrieb:
interaktives rebase kenne ich nicht, was geht damit?
Du kannst die Patchhistorie ändern. zB Patches entfernen, zusammenfassen, zerteilen, oder neu betiteln.
-
PRIEST schrieb:
Meinst sowas? Oder tap ich grad danenebn.
Nein, nicht wirklich. Er will sein Zeug ja trotzdem mitversionieren, aber eben nur in einer Branch. Wenn ich das richtig verstanden habe zumindest.
-
Hallo nman,
ja du hast mich richtig verstanden. Vielen Dank für Eure hilfe. Ich habe es mit cherry picking gemacht. Nicht so richtig schön, aber vielleicht fällt einem ja nochmal was anderes ein. Vielen Dank für Eure Hilfe!