Auf SourceTree habe ich einen Zweig namens "entwickeln". Ich benutze SourceTree Git Flow, um ein neues Feature aus dem Zweig "Entwickeln" zu erstellen. Ich mache Änderungen am Feature-Zweig und beende dann das Feature und die Änderungen gehen zurück zu meinem "entwickeln" Zweig.
Ich schiebe diese Änderungen dann auf die Fernbedienung.
Nun, hier ist, was ich versucht habe zu tun. Ich musste gleichzeitig an zwei JIRA Aufgaben arbeiten. Also habe ich zwei Feature-Zweige aus dem "develop" -Abzweig erstellt: "develop / feature1" und "develop / feature2". Ich kann zwischen den Features wechseln, indem ich sie bei Auswahl in SourceTree doppelt klicke. Ich kann dann die Arbeitskopie für beide Feature-Zweige überprüfen, aber ich bemerkte, dass Dateien, die ich zu einem hinzugefügt habe, auch dem anderen hinzugefügt wurden.
Meine Fragen sind:
Wenn ich Dateien zur Arbeitskopie eines Features hinzufüge, warum erscheinen sie dann in der Arbeitskopie eines anderen Features?
Was ist der Sinn von Feature-Verzweigungen, wenn sie keine Änderungen voneinander isolieren können?
git
können Sie Zweige wechseln, auch wenn Sie in Ihrer aktuellen Zweigstelle noch keine Änderungen vorgenommen haben. Die Dateien bleiben nicht festgeschrieben und Sie können sie bei Bedarf in den anderen Zweig übertragen. Das ist großartig, wenn Sie feststellen, dass Sie an feature/feature1
gearbeitet haben, das auf feature/feature2
stehen sollte.
Sobald Sie die Änderungen festgeschrieben haben, wechseln sie nicht mehr zwischen Zweigen. Sie könnten dann Änderungen zwischen den Zweigen zusammenführen oder auswählen.
Beachten Sie, dass git
Ihnen nicht erlaubt, Zweige zu wechseln, wenn Sie nicht festgeschriebene Änderungen haben, die Zusammenführungskonflikte in der Verzweigung verursachen, zu der Sie wechseln möchten, und vielleicht auch wenn eine Ihrer Änderungen in einer Datei ist, die geändert wurde in der Branche, in die Sie wechseln möchten. In diesem Fall müssen Sie Ihre Änderungen zuerst bestätigen, zurücksetzen oder speichern.
Wenn git
Ihnen nicht erlaubt, Zweige zu wechseln, und Sie versuchen, dies zu lösen, indem Sie Ihre Änderungen vor dem Wechseln der Zweige speichern, sollten Sie sicherstellen, dass Sie Pop in der ursprünglichen Verzweigung speichern. Wenn Sie sich in feature/feature1
befinden, ändert sich der Stash, wechseln Sie dann zu feature/feature2
und stash Pop, Sie werden Änderungen verlieren, die in feature/feature2
, aber nicht in feature/feature1
vorhanden waren. Das ist schwer zu erkennen.
Neue Dateien und Änderungen werden nicht von git verfolgt, bis Sie git add
ausführen. Das bedeutet, dass git keine Kopie dieser Daten hat. Wenn Sie also Ihre Änderungen zurücksetzen, wenn Sie einen anderen Zweig auschecken, können Sie sie nicht wiederherstellen.
Sie können Listen mit den Dateien indexiert , geändert und nicht verfolgt mit git status
anzeigen.
Die einzige Möglichkeit, dieses Problem zu lösen, besteht darin, Ihre Änderungen mit git zu verfolgen, indem Sie sie entweder hinzufügen und festschreiben (was Sie später mit git reset
rückgängig machen können) oder indem Sie sie mit git stash -u
1 git stash pop
rückgängig gemacht werden kann).
Der Vorteil von git, dass Sie so arbeiten, ist, dass Sie an allem arbeiten können, was Sie wollen, ohne über Zweige nachdenken zu müssen. Wenn es Zeit für das Commit ist, können Sie einfach den entsprechenden Zweig auschecken und die gewünschten Dateien mit git add
hinzufügen oder nur die Teile der gewünschten Dateien mit git add -p
hinzufügen.
1: -u
ist eine Abkürzung für --include-untracked
, die neu erstellte Dateien, aber nicht ignorierte Dateien enthält
Tags und Links git branch atlassian-sourcetree git-flow git-checkout