2016-06-24 9 views
3

Ich habe eine Menge Anfänger Fehler mit GitHub gemacht und als Ergebnis suche ich eine idiotensichere (Me-Beweis!) Methode, um sicherzustellen, dass:Git: Wie sicherzustellen, dass neue Niederlassung basiert auf Upstream-Master

a) Alle neuen Zweige, die ich auf einer Verzweigung erstelle, basieren auf dem Ursprungsstamm, nicht auf einer anderen Verzweigung und ...

b) Dass mein Herkunfts-Master immer up-to-date mit dem Upstream-Master ist, und. ..

c) Dass/wann ich (Push?) Begehe, werden meine Änderungen auf den Upstream Master rebasiert.

Hier ist, was ich bisher haben ...

Niederlassung erstellen:

git fetch --all --tag 
git pull upstream master 
git push origin master 
git checkout -b my_branch_name -t origin/master 

zu diesem Zweig meine Änderungen zu speichern:

git add -A 
git commit -m "Summary of what changed" 
git fetch --all --tag 
git pull --rebase upstream master 
git push origin my_branch_name 

eine bestehende Niederlassung laden auf ein späteres Datum (z. B. um einige zusätzliche Änderungen aufgrund der PR-Rückmeldung vorzunehmen):

Und dann meine Updates zu diesem Zweig zu speichern:

git add -A 
git commit --amend --no-edit 
git fetch --all --tag 
git pull --rebase upstream master 
git push origin my_branch_name -f 

ich Ich verstehe nicht vollständig gestehen müssen, was einige dieser Befehle tun - es scheint viele Möglichkeiten zu tun, viele ähnlich klingender Dinge zu sein und trotz vielem Googeln/Lesen bin ich immer noch ein Neuling.

Jede Anleitung sehr geschätzt!

+1

'git ziehen --rebase Upstream master' gefolgt von' git push origin my_branch_name' laufen wird nicht funktionieren in Allgemein, weil Sie den Verlauf von 'my_branch_name' neu schreiben. Stattdessen müssten Sie zwingen, Ihren Zweig über 'git push --force Herkunft my_branch_name' zu ​​drücken. –

+0

Können Sie Ihre Frage etwas genauer eingrenzen? –

+0

@TimBiegeleisen Die wichtigste Sache, die ich suche, ist, wie man sicherstellen kann, dass jeder neue Zweig, den ich erstelle (oder der bestehende Zweig, den ich öffne), auf dem Master und nicht auf irgendeinem anderen Zweig basiert. Das ist der größte Schmerz für mich, ich mache irgendwie Zweige, die auf früheren Abzweigungen basieren und nicht auf Meistern. – Aubergine18

Antwort

3

Um einen Funktionszweig erstellen auf der Grundlage der „aktuellen“ master Zweig, sollten Sie die folgenden Schritte ausführen:

git checkout master    # switches to your local master branch 
git pull origin master    # updates remote tracking branch, merges into local master 
git checkout -b my_feature_branch # create a new branch from your updated local master 

Hinweis, dass es immer die Möglichkeit, dass neue Änderungen in der entfernten master Zweig kommen immer wieder auf GitHub. Eigentlich sollten Sie generell davon ausgehen, dass dies geschieht, und Sie müssen damit umgehen, indem Sie sich zusammenschließen oder umschichten.

2

Wenn sich upstream master auf den letzten Hauptzweig im Server/Remote bezieht, können Sie einfach den folgenden Befehl ausführen, um einen neuen Zweig zu erstellen.

git fetch origin master 
git checkout -b <new_branch> FETCH_HEAD 

Wenn Sie nichts dagegen haben auf freistehende HEAD arbeiten, können Sie auch

git fetch origin master 
git checkout FETCH_HEAD 
Verwandte Themen