2012-03-31 7 views
0

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

0

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.

+0

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. –

0

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.

2

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:

  1. ein neuer Zweig erstellen genannt live zeigen f00ba4 zu begehen, dann check out:

    git checkout -b live f00ba4 
    
  2. Stellen Sie sicher, es gibt keine untracked Dateien rumliegen:

    git clean -dxf 
    
  3. kopieren den neuesten Code aus der Live-Website

  4. Commit den neuesten Code:

    git add -Af . 
    git commit -m "take another snapshot of the live site" 
    
  5. Wechseln Sie wieder zu Ihrer Branche:

    git checkout master 
    
  6. 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:

  1. 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" 
    
  2. Führen Sie die Änderungen an live in master:

    git checkout master 
    git merge live 
    

Whe n Sie bereit sind, Ihre Änderungen zu implementieren:

  1. 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" 
    
  2. Änderungen Merge in live:

    git merge master 
    
  3. Deploy die Dateien zur Live-Site