Ich würde vermuten, das ist Ihr Szenario:
$ git checkout ProductsAndContents
Switched to branch 'ProductsAndContents'
Zweig ProductsAndContents
die Datei tests/unit/src/models/BrandTests.js
enthält, so dass die obigen checkout
es erstellt und/oder sorgt dafür, dass es auf dem neuesten Stand ist mit dem spezifischen Festschreibung angefordert.
$ git status
# On branch ProductsAndContents
nothing to commit (working directory clean)
Sie haben keine Änderungen vorgenommen und haben mit einem sauberen Arbeitsverzeichnis begonnen, das ist also gut.
$ git checkout master
Switched to branch 'master'
Dies stellt sicher, dass alle Dateien in spätestens master
auf dem neuesten Stand Verzeichnis im Arbeits sind verpflichten enthalten. Es werden jedoch keine Dateien entfernt oder aktualisiert, die nicht in master
enthalten sind oder die ignoriert werden. Hier gehe ich davon aus, dass master
aus welchem Grund auch immer die fragliche Datei nicht enthält.
$ git status
# On branch master
nothing to commit (working directory clean)
Auch hier haben Sie keine Änderungen vorgenommen. Die Tatsache, dass die fragliche Datei hier nicht als eine nicht aufgezeichnete Datei erwähnt wird, bedeutet wahrscheinlich, dass sie ignoriert wird (entweder in .gitignore
oder in .git/info/exclude
). master
enthält die Datei nicht, so dass sie nicht betroffen ist.
$ git merge ProductsAndContents
error: Your local changes to the following files would be overwritten by merge:
tests/unit/src/models/BrandTests.js
Please, commit your changes or stash them before you can merge.
Aborting
Hier Ihr Versuch, in dem anderen Zweig zusammenführen will eine Datei vorstellen, dass master
hat derzeit nicht, die in der Regel in Ordnung ist. Diese Datei existiert jedoch in Ihrem Arbeitsverzeichnis, und git
möchte nicht etwas zerstören, von dem nicht sicher ist, ob es im Repository aufbewahrt wird. Wie an anderer Stelle empfohlen, können Sie (vorausgesetzt, Sie wissen, dass es sicher ist) diese Datei einfach entfernen und die Zusammenführung erneut versuchen.
Mit den Informationen, die Sie gegeben haben, bin ich nicht 100% sicher, dass das, was Sie hier haben; Sie können diese beiden Befehle ausführen für diesen Zustand zu überprüfen, aber:
git ls-files master -- tests/unit/src/models/BrandTests.js
git ls-files ProductsAndContents -- tests/unit/src/models/BrandTests.js
Wenn meine Vermutung richtig ist, wird der erste Befehl nicht nachgewiesen, dass die Datei vorhanden ist, während der zweite Willen. Überprüfen Sie dann .gitignore
und .git/info/exclude
, um zu sehen, ob es ignoriert wird (für .gitignore
müssen Sie möglicherweise die Version überprüfen, die in jedem der beiden Zweige vorhanden ist).
Haben Sie es irgendwie geschafft, diese Datei in die '.git/info/exclude'-Datei oder eine' .gitignore'-Datei zu speichern? –
Helfen die Konfigurationsoptionen in [diese Antwort] (http://stackoverflow.com/a/12167041/166732)? – asm
Hallo Andrew, das Setzen von 'core.trustctime' auf false scheint es getan zu haben. Danke, dass Sie mich in die richtige Richtung weisen :) –