Git gilt nicht für gelöschte Dateien beim Zusammenführen eines alten-Zweig in den master. Wie kann ich feststellen, Git anwenden gelöschten Dateien?
Ich habe einen master und einen dev-branch.
Ich machte commits in beiden.
Ich habe auch einige Dateien gelöscht, die in dev.
Ich habe andere commit in master -, so ist diese master-branch ist mehr die jüngsten.
Mein Problem ist, dass die Zusammenlegung dev in master nicht löschen Dateien.
Git berücksichtigen Sie, dass diese Dateien in master vorhanden ist und folglich, halten Sie während des Seriendrucks.
Wie kann ich das zusammenfassen dieser beiden Zweige und die Kraft Git, alle und jeder verpflichtet made in dev ? inklusive gelöschter Dateien.
Thks für Eure Hilfe!
- stackoverflow.com/help/how-to-ask
- Interessant, sind Sie mit einem git-Anwendung oder einfach nur von der Kommandozeile aus?
- Ich bin mit der cmd-line
- Dies ist nicht der Weg, es funktioniert für mich. Führt definitiv löschen von Dateien, wenn es nicht zu einem Konflikt mit den Veränderungen in den Filialen. Sie haben ein spezielles Standard - merge-Strategie, der führt zu diesem Verhalten.
- Nur zu wiederholen, dies ist nicht das, was git nicht. git behält keine Dateien während des Mischens, wenn Sie gelöscht werden, in den zu-sein-Zweig zusammengeführt. Sie haben ein anderes problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Führt definitiv löschen von Dateien, wenn es nicht zu einem Konflikt mit den Veränderungen in den Filialen.
Beweisen es mir, ich musste es versuchen zu reproduzieren das Szenario. Sehen Sie diese demonstration, in der Hoffnung, dass Sie sehen können, was Sie anders machen.
ein neues repository erstellen
erstellen und hinzufügen von einigen Dateien zu master-Zweig
erstellen neuer Zweig, und fügen Sie/löschen Sie einige Dateien
Begehen einige weitere änderungen im master
überprüfen von Dateien noch gelöscht, neu
Zusammenführen, neue auf master
wie Sie sehen können, die Datei
2.txt
gelöschtnew
Zweig ist nun definitiv gelöschtmaster
nach dem merge.Die einzige Möglichkeit, die ich Ausloten kann diese mögliche situation, ist wenn Sie zwei verschiedene Dateien, die jeweils mit dem gleichen Namen, in unabhängigen Zweigen.
also lassen Sie uns sagen, dass die
master
unddev
Branchen bereits existieren.file.txt
zumaster
dev
, dann wieder erstellen und verpflichtenfile.txt
zudev
. Nun, da haben Sie zwei verschiedene Dateien, die git-Ansichten Sie als zwei getrennte Entitäten trotz der gleichen Namen haben, besiegen Sie den Sinn und Zweck der Versionskontrolle.file.txt
ausdev
dev
inmaster
, und niedrige und siehefile.txt
existiert immer noch in dermaster
, und dies macht Sinn, denn wie ich schon sagte, git Blick auf die beiden Dateien völlig unabhängig.bemerken wenn Sie hatte nicht gelöscht
file.txt
ausdev
und versucht, ein verschmelzen, dann hätten Sie bekommen einen merge-Konflikt, da git würde nicht wissen, wie man zwei verschiedene Entitäten mit dem gleichen Pfad/Dateiname.Wenn dies Ihr Szenario ist, dann gehe ich auf Risiko Arroganz und sagen du machst es falsch 😉
Dem Punkt eines version-control-Systems ist, lassen Sie die tool-verwalten Sie Ihre Unterschiede zwischen einer Datei an verschiedenen Stufen in der Zeit, sowie die Beziehung dieser änderungen auf andere Dateien in der repository.
Mein Vorschlag zur Verbesserung des workflow in dieser situation wäre die Kasse der bestimmten Datei aus dem anderen Zweig:
file.txt
zumaster
Kasse
dev
, dann nehmen Sie einfach die einzelne Datei aus dem anderen ZweigIn dieser situation, können Sie immer noch auf der
dev
Zweig, aber jetzt Hinzugefügtfile.txt
von dermaster
Zweig.nun git erkennt, dass dies die gleiche Person. so löschen Sie die Datei und übernehmen Sie die Entfernung in
dev
dev
inmaster
jetzt löschenfile.txt
ausmaster
Ich hatte das gleiche problem. In meinem Fall habe ich denke, das problem war, dass, wenn ich den Seriendruck, meine Kopie der zusammengeführten-von der Zweig war veraltet im Vergleich zu der Fernbedienung. (ein Kollege getan hatte, die Löschung, nicht von mir)
In jedem Fall, was es behoben wurde, löschen Sie die ganze Arbeit kopieren und Klonen Sie es von neuem.
Können Sie den Seriendruck auszuführen, ohne dass, stellen Sie sicher, Sie haben alle die richtigen Dateien, und führen Sie anschließend das commit.
Den Seriendruck durchführen
Nehmen Sie die erforderlichen änderungen und lösen von Konflikten beim Zusammenführen (falls vorhanden).
Commit den merge -, finishing-Prozess.