Ich habe eine Client-Site, die eine singuläre Code-Basis hatte. Bei meinen letzten Änderungen habe ich die Live-Kopie der Website übernommen und in ein neues GIT-Repository übertragen und mit neuen Aktualisierungen begonnen. Jetzt gibt es einen anderen Entwickler, der Änderungen an der Live-Site vorgenommen hat, also würde ich gerne etwas tun, was mir erlauben würde, seine Änderungen wie einen anderen Zweig oder etwas zu behandeln und die Unterschiede reibungslos zusammenzuführen. Was wäre ein geeigneter Ansatz dafür? Ich habe darüber nachgedacht, den Code einem neuen Zweig hinzuzufügen, einen Diff-Patch zu erstellen und ihn auch auf den GIT-Code anzuwenden.Zusammenführen von Nicht-Git-Code mit Git-basierten Code (Anfangscode-Basis ist derselbe)
Antwort
Einen anderen Zweig machen und dann seine Änderungen einreichen wäre ein guter Weg, es zu tun.
Eine bessere Methode wäre es, diesen anderen Entwickler auf einem eigenen Git-Zweig zu bekommen und dann einfach ineinander zu integrieren.
Verzweigung ist der normale Ansatz in Git. Das bedeutet: Verzweige von deinem aktuellen Code, führe die Zusammenführung dort durch und wenn es erfolgreich ist, führe es zurück in den Hauptzweig.
Verzweigung ist nicht etwas, das vom gewöhnlichen (wie in SVN) abweicht, aber es ist Teil des normalen Workflows in Git. Es ist nicht nötig, dass die Bearbeitung dieses Entwicklers Ihre Arbeit beeinträchtigt: Sie müssen nur separat zusammenführen und dann wieder in den Hauptzweig einbinden.
Ich nehme an, Sie so etwas wie die folgenden haben:
git init project
cd project
<copy existing code to this directory>
git add -Af .
git commit -m "Import code"
<edited some files>
git commit -a -m "Made changes"
Der beste Ansatz ist eine abzweigen der ursprünglichen Import erstellen begehen und einen anderen Schnappschuss der Live-Site in diesem Zweig machen. Angenommen, das ursprüngliche Import-Commit hat eine Commit-ID von f00ba4
(Sie können git log
verwenden, um die tatsächliche SHA1-ID herauszufinden).Zu den weiteren Entwickler-Änderungen übernehmen, können Sie wie folgt vorgehen:
ein neuer Zweig erstellen genannt
live
zeigen f00ba4 zu begehen, dann check out:git checkout -b live f00ba4
Stellen Sie sicher, es gibt keine untracked Dateien rumliegen:
git clean -dxf
kopieren den neuesten Code aus der Live-Website
Commit den neuesten Code:
git add -Af . git commit -m "take another snapshot of the live site"
Wechseln Sie wieder zu Ihrer Branche:
git checkout master
Integrieren Sie die Änderungen des anderen Entwickler mit den Änderungen:
git merge live
Jedes Mal das andere Entwickler, die Dateien in der Live-Site ändert, können Sie Ihr Repository wie folgt aktualisieren:
Aktualisieren der
live
Zweig mit dem neuesten Code:git checkout live git clean -dxf <copy the files from the live site> git add -Af . git commit -m "another snapshot of the live site"
Führen Sie die Änderungen an
live
inmaster
:git checkout master git merge live
Whe n Sie bereit sind, Ihre Änderungen zu implementieren:
Sicherstellen, dass die
live
Zweig ist auf dem neuesten Stand:git checkout live git clean -dxf <copy the files from the live site> git add -Af . git commit -m "another snapshot of the live site"
Änderungen Merge in
live
:git merge master
Deploy die Dateien zur Live-Site
Ich plane, das für später einzustellen. Unsere aktuelle Codebasis wurde mit Änderungen vorgenommen, die wir per FTP auf den Server übertragen würden. Als ich mit dem GIT-Repo angefangen habe, hat er einige Änderungen per FTP vorgenommen, seit ich anfing, mit meinem ursprünglichen Code-Klon zu spielen, also muss ich diese Änderungen hinzufügen und ihn einrichten lassen. –