Mehrere Funktionen für einen Zweig - was ist der Sinn?

8

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:

  1. Wenn ich Dateien zur Arbeitskopie eines Features hinzufüge, warum erscheinen sie dann in der Arbeitskopie eines anderen Features?

  2. Was ist der Sinn von Feature-Verzweigungen, wenn sie keine Änderungen voneinander isolieren können?

Breako Breako 02.08.2013, 10:22
quelle

2 Antworten

9
Mit

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.

    
Arjan 10.08.2013, 22:42
quelle
3

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 (was später mit einem 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

    
Zaz 12.08.2013 18:34
quelle