2016-05-12 4 views
0

Ich möchte die Änderungen, die in develop Zweig in meinem Zweig OneUser durchgeführt wurden, holen und zusammenführen.Drücken fehlgeschlagen (Zusammenführung zurückgegeben `bereits auf dem neuesten Stand`)

ich tue:

git checkout OneUser 
git fetch origin develop 

... 
Unpacking objects: 100% (21/21), done. 
From https://github.com/......... 
* branch   develop -> FETCH_HEAD 
    e2f......... d36 develop -> origin/develop 

git merge origin develop 

Already up-to-date. 

git commit -a

(Ich weiß, dass einige Änderungen vorgenommen haben, so normalerweise sollte es mir einige Konflikte geben oder was es geändert wurde?)

Dann, wenn ich versuche, meine Änderungen zu schieben zu entwickeln:

git checkout OneUser 
git push -u origin develop 

! [rejected]  develop -> develop (non-fast-forward) 
error: failed to push some refs to 'https://github.com/.../.git 
hint: Updates were rejected because a pushed branch tip is behind its remote 
hint: counterpart. Check out this branch and integrate the remote changes 
hint: (e.g. 'git pull ...') before pushing again. 

======== = Α Workflow ========================

git checkout -b OneUser develop 
git branch --set-upstream-to=origin/develop 

//fetch from develop branch and merge to OneUser 
git checkout OneUser 
git fetch origin develop 
git merge origin/develop 

If you have any conflicts ,solve , add files and commit. 

//work on branch 
git add “files” 
git commit -m “message” 

//push to develop 
git push origin OneUser:develop 
+0

Der Workflow ist in Ordnung und soll funktionieren, zu einem anderen Zweig zu drängen Puritaner argumentieren können, ein alternatives Puritaner Ende kann Ihren Workflow sein: '// fusionieren Ihre lokale Niederlassung zu lokaler develop' ' git checkout entwickeln ' ' git merge OneUser' 'git push Ursprung entwickeln ' – dubes

+0

@dubes: Ok, vielen Dank! – George

Antwort

2

Wenn ich schieben richtig verstehen Sie Ihre lokale Niederlassung OneUser an den entfernten Zweig develop

In diesem Fall drücken wollen, müssen Sie git sagen, so

git push origin OneUser:develop 

Das sagt git, zum Ursprungsrepository Ihre Niederlassung (OneUser) zum Entwicklungzweig in Fern zu schieben.

Warum Sie den Fehler konfrontiert:

git checkout OneUser 
git push -u origin develop 

! [rejected]  develop -> develop (non-fast-forward) 

mit git push -u origin develop wurden instruiert Sie git: Ihre lokalen Zweig namens "entwickeln" an den Remote-Zweig schieben, die den Namen übereinstimmt. Da Sie mit Ihrem Zweig OneUser verschmolzen sind, aber Ihre lokale Kopie des Zweigs develop nicht aktualisiert haben, konnte git nicht pushen. Sie können auch in der Fehlermeldung sehen:

! [rejected]  develop -> develop (non-fast-forward) 

Update # 1 in Ihrem Szenario Scheint, wie würden Sie immer für Ihre OneUser Zweig mit develop synchronisieren, in diesem Fall explizit git fragen so, durch die Ausgabe des Befehls (nur 1-mal)

git branch --set-upstream-to=origin/develop 

Sie können zur Behandlung es überprüfen, welche Fern Zweig wird von nachverfolgt:

git status -sb 

Dann ist es einfach die Angelegenheit, Ihren "lokalen" Zweig zu drängen, git wird wissen, wo man es drückt.

git push origin OneUser 
+0

: Und was ist der Unterschied mit dem 'git checkout OneUser git push -u Herkunft entwickeln ' – George

+0

: Im Allgemeinen arbeite ich an meinem Zweig' OneUser' und dann drücken/ziehen meine Änderungen zu/von 'entwickeln' Zweig – George

+0

@George hat meine Antwort mit einer Erklärung aktualisiert, warum Sie dem Fehler gegenüberstanden. Wenn Sie möchten, dass Ihre lokale Verzweigung mit dem Zweig "development" synchron ist, können Sie --set-upstream-to oder -u verwenden, jedoch mit vollständiger Referenz. Ich werde meine Antwort mit weiteren Details und Hinweisen aktualisieren – dubes

0

ich glaube Sie für "git pull --rebase" suchen. das sollte die Remote-Änderungen integrieren, so dass Sie

+0

: Ich möchte die Rebase comand..ich bin mir nicht sicher, – George

+0

gut, alles was es tut, ist die neuesten Commits holen und legen Sie alle neuen Commits auf Ihrem Ende oben auf sie, so dass sie einfach wie die neuen Commits geschoben werden können. es klingt genau nach was du suchst. Ich meine, ich bin mir sicher, eine Zusammenführung würde auch funktionieren, aber Rebasing macht in der Regel mehr Sinn in diesem Fall – mephisto

+0

: Ich löste die Konflikte (bearbeitet die Dateien, fügen, commit) und wenn versucht, es zu drücken gab mir wieder den gleichen Fehler! Ich habe auch 'git pull --rebase' versucht, aber es gibt mir' Fehler: Kann nicht mit der Rebase ziehen: Du hast keine Änderungen vorgenommen. ' – George

Verwandte Themen