2017-08-10 3 views
0

Ich habe zwei Ziele, und ich brauche einen Workflow, um sie während der Arbeit an meinen Funktionen zu erreichen (Master ist ein Enterprise Github Repo).Empfohlener Arbeitsablauf, um den Git Zweig auf dem neuesten Stand zu halten

Ziele:

  • meine Niederlassung Neuigkeiten

  • der Lage sein, Änderungen zu sehen Ich git diff und git show

Ich bin neu in Github gemacht, aber ich habe einige Szenarien versucht, um das zu erreichen und sie helfen mir nicht.

Zunächst erstelle ich einen neuen Zweig (Tracks Herkunft/Master) und ich mache einen Code ändern.

Ich fest die Änderung und git push origin verwenden, um diese Änderung zu Github zu veröffentlichen.

Dann erstelle ich eine PR und lassen Sie die Leute kommentieren.

Ich bekomme gutes Feedback, ich mache Codeänderungen und setze mich zusätzlich zu meinem ersten Commit ein.

Was kann ich tun, um meine Filiale mit Ursprung/Master zu synchronisieren?

Ich habe versucht, meine lokale Niederlassung durch Zusammenführen über git pull zu aktualisieren. Es geht in Ordnung, aber wenn ich jetzt git show mache, sehe ich meine Änderungen nicht, ich werde den letzten Master Commit sehen.

Ich habe versucht, meine lokale Niederlassung durch Rebasieren über git pull --rebase zu aktualisieren. Ich kann git show verwenden, um meine Änderungen zu sehen, aber meine lokalen und Remote-Zweigstellen sind nicht synchron, und ich muss git push origin -f verwenden, um meine Github PR mit der zweiten Änderung zu aktualisieren.

Ich bin offen für Vorschläge, danke!

+1

Alles, was Sie erwähnten, klingt korrekt. Wenn Sie nur fragen, wie man einen Unterschied einer Datei von einem Commit zum anderen sieht, kann ich Ihnen empfehlen, ein Git-Plugin für Ihre IDE zu bekommen? IntelliJ zum Beispiel macht es sehr gut, wenn Sie eine Datei gegen ein Commit im selben Zweig oder sogar gegen andere Zweige differentieren können. Viel schöner als die Befehlszeile. –

+0

Hat die Antwort Ihnen geholfen, das Problem zu lösen? Wenn ja, können Sie es als Antwort markieren. Und es wird anderen helfen, die ähnliche Fragen haben. –

Antwort

1

Was Sie tun, ist der richtige Ansatz. Es gibt einen großen Unterschied zwischen pull und pull --rebase. Es wird git fetch && git merge origin/master resp. git fetch && git rebase origin/master. Beide sind richtiger Ansatz. Der Unterschied liegt in der Baumhistorie und in den meisten Fällen ist es Firmenpolitik, was man lieber verwenden sollte.

Mit Rebase werden Sie immer Geschichte ändern und müssen Push drücken. Bei der Zusammenführung werden Sie den Verlauf nicht ändern, aber das letzte Festschreiben ist das Zusammenführen.

Erwarten Sie nicht, dass Sie nur einen Commit haben, der gepusht wird, also sollte der Unterschied nicht nur für einen Commit, sondern für den ganzen Zweig sein. Wenn Sie nur die diff sehen müssen, können Sie ausführen:

git show HEAD~1 

oder git show HEAD ~ 4..HEAD ~ 1

um zu sehen, alle Änderungen in letzten Commits außer der letzten (verschmelzen).

Oder Sie können so etwas wie dieses

git diff --boundary HEAD~1..origin/master 

P. S .: versuchen rebase und Kraft Push kann ziemlich gefährlich sein, wenn mehr Menschen auf der gleichen Branche arbeiten.Force Push nur, wenn Sie sicher sind, dass Sie der einzige sind, der in der Branche arbeitet.

Es kann auch Probleme mit den Kommentaren geben. Ich bin mir nicht sicher, wie Github, aber Gitlab wird keine Kommentare für komplett geänderte oder entfernte Zeilen nach dem force push anzeigen.

Verwandte Themen