Während ich git für alle meine Projekte verwende, muss ich gelegentlich mit Kollegen zusammenarbeiten, die git nicht verwenden. Sie ziehen es vor, ihre gezippten Quellen hin und her zu senden. Es ist nervig und umständlich, aber ich muss damit umgehen. Der Workflow ist wie folgt:Zusammenarbeit mit Kollegen, die kein Git verwenden
Wenn sie meinen Code benötigen, verwende ich git archive
und senden Sie ihnen eine Zip-Datei export.zip
. Ich arbeite weiter und mache die Änderungen, die ich mache, während sie mit meinen veralteten Quellen arbeiten. Illustration:
┌ archive & mail
│
A ← B ← C
└───┴── my later changes
Einige Zeit später, sie schicken mir ihre Antwortdatei import.zip
. Was ist der beste Weg, um die Zip-Datei in meinen Git Tree zu importieren und zu implementieren? kann ich denke an die folgenden drei Optionen, die semantisch unterscheiden:
meine spätere Änderungen Betrachten wir auf der Grundlage ihrer Änderungen:
┌ archive & mail │ A ← A' ← B ← C │ └───┴── my later changes │ └─ their changes
Hier würde ich Kasse
A
, entpackenimport.zip
, begehen alsA'
und dann wenden Sie wiederB
undC
an (und was auch immer folgte). Wie setze ich einen erneuten Antrag aufHEAD
?Betrachten Sie ihre Änderungen auf der Grundlage meiner späteren Änderungen:
A ← B ← C ← A'
Hier würde ich einen Patch auf der diff erstellen basierend zwischen
A
undimport.zip
und dann Anwendung, wenn aufC
.einen Zweig erstellen und zusammenführen:
A ← B ← C ← M ↖ ↙ A'
Während diese Frage zu schreiben, ich kam zu dem Schluss, dass diese Option die allgemein anwendbar ist und die robusteste. Sind Sie einverstanden?
Ich bin dankbar für weitere Ratschläge in Bezug auf diesen Workflow. Zum Beispiel finde ich es mühsam und fehleranfällig, sich an das Commit A
zu erinnern, das ich archiviert habe.
@aelam Sie könnten das abschätzig sagen, aber es gibt eine gute Chance, dass sie tatsächlich keine Software-Ingenieure sind. – shadowtalker
Nur als eine Anmerkung, können Sie erneut Commits zu einem anderen Zweig mit 'Git Rebase', aber ich würde die Option # 3 empfehlen. –
haben Sie versucht, Rebase wenn Sie alle Commits in einer einzigen Zeile wollen und auch Sie können A-> – aelam