Ich bin neu bei Git, also zögern Sie nicht, mich wie einen Neuling zu behandeln.
Unser Workflow ist so. Wir haben eine Filiale namens, devdie ich erreichen kann origin/dev. Wenn wir Änderungen vornehmen, erstellen wir einen Zweig von dev:
git checkout -b FixForBug origin / dev
Jetzt habe ich einen Zweig namens FixForBugTracking (ich denke, das ist das richtige Wort) origin/dev. Wenn ich also ein git pullmache, bringt es neue Änderungen mit sich, von origin/devdenen es großartig ist. Wenn ich mit meinem Fix fertig bin, drücke ich zu einem Remote-Zweig, der dasselbe heißt.
Zuerst ziehe ich alle Änderungen von herunter origin/devund mache eine Rebase:
Git Pull - Rebase
Dann schiebe ich die Änderungen in einen Remote-Zweig mit demselben Namen:
Git Push Ursprung FixForBug
Jetzt gibt es einen Zweig auf dem Remote-Server, und ich kann eine Pull-Anforderung erstellen, damit diese Änderung genehmigt und wieder in den Entwicklungszweig integriert wird. Ich schiebe mir nie etwas vor origin/dev. Ich vermute, dies ist ein ziemlich häufiger Workflow.
Das erste Mal, wenn ich a mache git push, funktioniert es einwandfrei und erstellt den Remote-Zweig. Wenn ich jedoch ein zweites Mal drücke (sagen wir, während der Codeüberprüfung weist jemand auf ein Problem hin), wird der folgende Fehler angezeigt:
Fehler: Einige Refs konnten nicht an ' https://github.limeade.info/Limeade/product.git ' gesendet werden. Hinweis: Aktualisierungen wurden abgelehnt, da sich die Spitze Ihres aktuellen Zweigs hinter dem Hinweis befindet: dem Remote-Gegenstück. Integrieren Sie die Remote-Änderungen (z. B. Hinweis: 'git pull ...'), bevor Sie erneut drücken. Hinweis: Weitere Informationen finden Sie im 'Hinweis zum Schnellvorlauf' in 'git push --help'.
Wenn ich jedoch ein Commit mache , bedeutet dies git status, dass ich origin/dev1 Commit voraus bin (was sinnvoll ist), und wenn ich dem Hinweis folge und laufe git pull, heißt es, dass alles auf dem neuesten Stand ist. Ich denke, das liegt daran, dass ich zu einem anderen Zweig als meinem vorgelagerten Zweig drücke. Ich kann dieses Problem beheben, indem ich Folgendes ausführe:
git push -f origin FixForBug
In diesem Fall werden die Änderungen auf den Remote-Zweig übertragen, wobei (erzwungenes Update) angezeigt wird , und auf dem Remote-Zweig scheint alles in Ordnung zu sein.
Meine Fragen:
Warum ist -fin diesem Szenario erforderlich? Wenn Sie etwas erzwingen , liegt dies normalerweise daran, dass Sie etwas falsch gemacht haben oder zumindest gegen die Standardpraxis. Bin ich in Ordnung, oder wird es etwas in der Remote-Filiale durcheinander bringen oder Ärger für jeden verursachen, der irgendwann meine Sachen in Entwickler zusammenführen muss?
git pull origin FixForBugbevor ich dazu dränge ? Ok das macht Sinn. Fühlen Sie sich frei, als Antwort hinzuzufügen!
