2013-09-04 17 views
6

Remotes: HerkunftUmbasierung lokaler Git-Zweigs vor Push-to-Remote-

$ git branch 
* master 

$ git checkout -b "new_feature" 

Jetzt habe ich kuppelt von Commits auf "new_feature" Zweig und will es Herkunft schieben, nachdem es zu aktualisieren.

$ git branch 
master 
* new _feature 

$ git pull --rebase origin new_feature  
$ git push origin new_feature 

Ist dies der richtige Weg, um den lokalen Zweig zu aktualisieren, bevor er auf die Fernbedienung drückt?

Antwort

3

Sie

git pull --rebase origin master 

Die arguments to git pull muss eine optionale Fernbedienung bedienen sein soll, und eine optionale Refspec oder Referenz/branch auf diesem entfernten:

git pull [options] [<repository> [<refspec>…]] 

new_feature wird nicht arbeiten, weil es eine lokale Verzweigung ist, und zusätzlich macht es keinen Sinn für die rebase, weil Sie eine Revision an 0 übergeben möchtender Zweig new_featureauf. Wenn Sie haben new_feature ausgecheckt, dann ist es verstanden/implizit, dass das ist die Branche, die Sie wollen rebase, so funktioniert rebase normalerweise funktioniert.

+0

Ich verstehe das nicht. Mein Verständnis ist, dass ich, da ich den Zweig new_feature auf remote verschieben muss, update new_feature vor dem Drücken. Jetzt arbeite ich gerade am Zweig new_feature. Wie wird gir pull --rebase origin master "new_feature" aktualisieren? Das wird Master-Zweig korrekt aktualisieren? Das tut mir leid . Aber aus irgendeinem Grund bekomme ich diesen letzten Teil nicht. –

+0

Sie müssen Ihre Frage klären. Haben Sie versucht, 'new_feature' mit Änderungen von 'origin' zu aktualisieren?Oder hast du versucht, es mit Änderungen zu aktualisieren, die an "master" in "origin" vorgenommen wurden? –

0

nach dem „new_feature“ Zweig der Erstellung Sie einen Zustand wie

haben
o <master> <origin/master> <new_feature> most recent commit 
| 
... 

Dann, nachdem Sie die Änderungen an Ihrem lokalen Niederlassung Repository commiting aussehen wird

o <new_feature> your last commit 
| 
o your first commit 
| 
o <master> <origin/master> most recent commit 
| 
... 

ein

Doing
git pull --rebase origin master 

, wie Cupcake vorschlägt, enden Sie mit

o <new_feature> your last commit 
| 
o your first commit 
| 
o <origin/master> something meanwhile commited on remote master 
| 
o <master> most recent commit 
| 
... 

Ihre Änderungen rebased auf "Ursprung/Master". Dies sind nicht Ihre ursprünglichen Commits, sondern Commits geändert, um auf den "neuen" "Ursprung/Master" zu passen.

Durch die Rebase können Sie Merge-Konflikte bekommen, weil Änderungen, die auf dem Remote-Master vorgenommen wurden, mit Ihren Änderungen in Konflikt geraten können.

Da aber "new_feature" jetzt "über" "origin/master" steht, können Sie einen Push zum entfernten Master machen.

Dadurch wird auch die Variable "origin/master" auf die Ebene "new_feature" gesetzt. Wenn Sie auch Ihren lokalen "Master" auf der Spur haben wollen, müssen Sie ihn dann auschecken und mit "Herkunft/Master" zusammenführen.