2009-07-26 2 views
0

Ich habe Git als Quellcode-Management-Tool verwendet. Vorerst mein Workflow ist einfach:Was wäre der beste Workflow, um Refactorings mit neuen Funktionen in Git zu mischen?

  • denken über eine minimale neue Funktion/Refactoring
  • Code es
  • Bewertung ist die diff mit HEAD
  • begehen

Ich mag würde verbessern diesen Workflow, indem Sie ihn flexibler machen. Der Grund ist, dass ich die folgende Situation ein paar Mal getroffen habe, was ich für typisch halte:

Nach einem Commit fange ich an, das Arbeitsverzeichnis zu modifizieren, um ein neues Feature hinzuzufügen.

Ich Code für eine Weile, lassen Sie den Zustand des Arbeitsverzeichnisses in diesem Moment A sein. Wichtig ist hier, dass Status A das Arbeitsverzeichnis nicht bereit zum Commit ist, da das neue Feature noch nicht abgeschlossen ist.

An diesem Punkt merke ich, dass es besser wäre, zuerst ein Refactoring durchzuführen. Geben Sie es zu, manchmal wird die Notwendigkeit eines Refactorings im Prozess der Codeänderung offensichtlich.

Jetzt muss ich wieder von HEAD beginnen und das Refactoring zuerst machen. Ich will aber nicht die Änderung des Codes HEAD verlieren -> Zustand A. Also im Grunde muß ich:

  • das Refactoring tun in einer Kopie des Arbeitsverzeichnisses, die noch nicht nach dem letzten geändert wird, begehen
  • begehen es
  • die Arbeit an der neuen Funktion verschmelzen, die ich angefangen habe und es gestoppt, wenn das Arbeitsverzeichnis A
  • vervollständigen die Arbeiten an der neuen Funktion es
  • begehen
in Staat

Ich glaube, das ist, wo Verzweigung kann mir helfen, aber ich habe Probleme bei der Bestimmung der richtigen Git-Befehle. Ich bin verwirrt von der Tatsache, dass ich eine Verzweigung erstellen muss, wenn das Arbeitsverzeichnis nach einem Commit geändert wird und ich nicht den richtigen Weg kenne, damit umzugehen.

Wie kann der obige Workflow in Bezug auf Git-Befehle beschrieben werden?

Antwort

2

Sie wollen Git stash. Wenn sich Ihr Arbeitsverzeichnis in einem Zwischenzustand befindet, für den Sie nicht bereit sind, zu committen, führen Sie "git stash" oder "git stash save" einen Text "" aus. Dies bringt Ihr Arbeitsverzeichnis zurück zu HEAD. Jetzt machen Sie eine Änderung und verpflichten Sie sich. Führen Sie dann 'git stash pop' aus und Ihre vorherige Zwischenarbeit wird in das Arbeitsverzeichnis übernommen. Sie können mehrere Taschen haben; Liste sie gith 'git stash list'. (Der 'some text' wird sie identifizieren. Wenn Sie keine Meldung zur Verfügung stellen, der letzte Commit-Log verwendet wird.)

Siehe auch 'git add --patch' und git add '--interactive'

0

git Stash ist, was du suchst, glaube ich.

2

Wenn Sie ein neues Feature starten, erstellen Sie einen neuen Zweig, und arbeiten Sie dort.Wenn Sie denken, dass Sie Code, an dem Sie gerade nicht arbeiten, refaktorieren müssen, wechseln Sie zurück zum Master (oder einem anderen dedizierten Zweig) und tun Sie es. Wenn Sie fertig sind, führen Sie den Refactoring-Zweig zurück in den Master. Richten Sie dann Ihren Feature-Zweig auf den aktualisierten Master neu.

Verwandte Themen