Es gibt eine Reihe von git-Workflows, die Ihnen offenstehen, weil es ein flexibles Werkzeug ist, aber ein einfacher Workflow besteht darin, einen 'Master'-Zweig und einen' Entwicklungs'-Zweig zu haben. Sie können Push- und Pull-Vorgänge direkt zu Ihrem Repo durchführen, ohne auf Github verzichten zu müssen und ohne dass Ihr Mitarbeiter ständig Github-Pull-Requests senden muss.
Sie können die meisten Ihrer lokalen Commits auf dem Zweig entwickeln, aber häufig aus dem Remote-Entwicklungszweig herunterziehen, um den Code des anderen zu fusionieren - es ist in diesem Stadium, dass Sie mit Merge-Konflikten umgehen können Fernbedienung.
Weniger häufig können Sie Master herunterziehen und das mit entwickeln. Die Idee ist, dass der Master-Zweig stabiler ist und jederzeit für die Veröffentlichung vorbereitet werden kann, so dass keine aktive Entwicklung darauf stattfindet. Das ist alles dazu.
Wenn Sie weiter gehen möchten, können Sie beide "Feature-Zweige" aus Ihrem Zweig zu entwickeln, aber das Prinzip ist das gleiche - zurück zu "up" zu entwickeln, und von dort nach oben zu meistern.
Die wichtige Sache ist, Ihre Arbeit häufig zu synchronisieren (zusammenzufügen), andernfalls sind die Unterschiede in Ihren getrennten Kopien der Codebasis wahrscheinlich größer, was eine größere Wahrscheinlichkeit von Konflikten bedeutet. Wenn Sie weiterhin Konflikte haben, drücken und ziehen Sie häufiger, so dass die Unterschiede kleiner und einfacher zu handhaben sind.
Konflikte treten besonders häufig auf, wenn Sie beide stark an denselben Dateien arbeiten. In solchen Fällen lohnt es sich manchmal, organisiert zu sein und die Arbeit in Funktionen einzuteilen, die verschiedene Teile (Dateien) der Codebasis verändern, so dass es weniger wahrscheinlich ist, dass sie sich gegenseitig auf die Füße treten.
Denken Sie daran, Ihre lokalen Änderungen vor dem Ziehen zu bestätigen, andernfalls werden die Änderungen als "Staging" betrachtet und nicht automatisch während des Ziehens zusammengeführt. Glücklicherweise ist Git ziemlich fehlerverzeihend und sehr gut im Umgang mit Merge-Konflikten.
Nun, Teil des Problems, sagen wir, wir haben den exakt gleichen Code. Dann mache ich eine Menge Veränderungen. Es sollte keine Konflikte geben, wenn er zieht, weil er keine Änderungen vorgenommen hat. Und doch wird es Konflikte geben. Vielleicht ist das nur ein Teil von git, das ich aufgrund meiner Erfahrung mit svn nicht verstehe? – Elliot
@Elliot: Richtig ... in diesem Fall sollte er vielleicht seinen eigenen Zweig machen und seine Pull-Anfrage von diesem Zweig zu deinem GitHub Repo machen. Es könnte ein Problem mit dem gemeinsamen Vorfahren sein. Können Sie diese Konfiguration testen (Pull-Anforderung für Patches, die in einer lokalen Verzweigung statt direkt in derselben Verzweigung erstellt wurden)? – VonC