Es ist normal, obwohl ich von einem Schritt etwas überrascht bin.
Wenn Sie von B nach A wechseln, sieht git, dass die Datei aktualisiert werden muss, damit sie der Version von A entspricht. Dies geschieht stillschweigend, weil Sie sie ignoriert haben. t Angelegenheit. Es muss dies tun - die einzige Alternative ist es, den Zweig A nicht zu überprüfen. (Es würde sich weigern, wenn die Datei nicht ignoriert würde, "Untracked working tree file '' würde von merge überschrieben werden." Ich bin wirklich überrascht in diesem Fall tut das auch niemand.Jeder hat irgendeinen Einblick, ob das Feature oder Bug ist?)
Wenn Sie zurück zu, Git sieht, dass Zweig B diese Datei nicht hat, und entfernt es. Auch das muss es tun. Es hat keine Möglichkeit, deine Gedanken zu lesen und zu erkennen, dass diese ignorierte Datei, die vor einer Minute dort war, eine ist, die du zurückhaben willst - sie gibt dir einfach den Inhalt von Zweig B, der besagt, dass die Datei nicht existiert.
Wie ewall in den Kommentaren empfiehlt, wenn die Datei diese Übergänge überleben soll, muss sie von allen Zweigen verfolgt oder in allen Zweigen ignoriert werden.
Gibt es einen Grund, warum Sie es nicht in allen Zweigen ignorieren oder in alle Zweige aufnehmen können? – ewall
Es gibt ein lustiges Problem hier: Wenn Sie es zu .gitignore in Zweig A hinzufügen und dann zu .gitignore in Zweig B hinzufügen möchten, müssen Sie Zweig B abchecken, an diesem Punkt wird die Datei gelöscht - BEVOR Sie hatten eine Chance, es zu ignorieren. Wahrscheinlich benötigen Sie ein schmutziges .gitignore in Ihrem Arbeitsverzeichnis *, das die Datei * enthält, wenn Sie die Zweige wechseln, um zu vermeiden, dass die Datei gelöscht wird. – Armand
@Alison G: Dein Fall macht nicht viel Sinn. Damit dies geschehen kann, muss die Datei in Zweig A * nachverfolgt werden. Sie würden sie daher niemals in Zweig A in den Zweig gitigore aufnehmen. Die Datei wird entfernt, da sie in einem Zweig verfolgt wird und nicht existiert das andere. Der einzige Effekt, der es ignoriert, besteht darin, dass Sie von B nach A wechseln können, ohne dass Sie gewarnt werden, dass Sie eine Datei in der Arbeitshierarchie überschreiben. – Cascabel