2012-04-11 7 views
1

Wenn ich ein Beispielprojekt (nicht Git verwaltet) auf einer Website heruntergeladen und ich eine Niederlassung und einige Commits zu diesem Projekt erstellt. Dann machte der ursprüngliche Autor einige Updates zu diesem Projekt und veröffentlichte auf der Website ...Git Merge von nicht verwalteten Projekt

Jetzt, wie kann ich dieses Update (nicht Git verwaltet) zu meinem Git verwalteten Projekt zusammenführen?

Ich bin ein neuer Benutzer von VCS/Git.

Danke. Raymond

Antwort

1

Machen Sie einen zweiten Zweig, der mit dem ursprünglichen SHA beginnt, von dem Sie ausgegangen sind (bevor Sie Änderungen vorgenommen haben).

Überprüfen Sie diesen Zweig.

Ersetzen Sie den Inhalt des Arbeitsverzeichnisses durch die neue Version des externen Codes.

git add . und git add -u, um alle Änderungen und Entfernungen durchzuführen.

Übernehmen.

Prüfen Sie Ihre ursprünglichen verzweigen und Zusammenführen der zweiten Niederlassung in.

+0

Danke. Meinst du ich benutze einfach "Kopieren und Einfügen", um die Dateien und Ordner zu ersetzen? Wie wäre es, wenn der Autor einige Dateien/Ordner umbenannt oder entfernt hätte? – RRN

+0

Sie sollten den Inhalt des Arbeitsverzeichnisses löschen und dann in die neue Version kopieren. Auf diese Weise werden Umbenennungen und Umzüge korrekt abgeholt. – Amber

+0

Ich kann herausfinden, warum Git Dateien entfernen kann, aber wie kann man Dateien umbenennen? Vielen Dank. – RRN

0
  1. einen neuen Zweig erstellen und wechseln Sie in den neuen Zweig

    git branch AuthorUpdate

    git switch AuthorUpdate

  2. kopieren/Fügen Sie alle Dateiänderungen und Commit ein. Leider würde jede Datei umbenennen oder löschen nicht aufgenommen werden.

    git add .

    git commit -am 'new changed by original author'

  3. Schalter an die Master-Zweig und fusionieren es

    git checkout master

    git merge AuthorUpdate

Wenn Es besteht ein Konflikt im Code. Möglicherweise müssen Sie sie manuell beheben. Weitere Informationen finden Sie unter http://progit.org/book/ch3-2.html

+0

Glaubst du, es funktioniert besser, wenn ich * lösche.* aus dem Arbeitsverzeichnis vor dem Einfügen der Dateien ?? – RRN

+0

Nein. Nachdem Sie die Dateien eingefügt haben, können Sie 'git status' und' git diff' verwenden, um die Änderungen vor dem Festschreiben zu verfolgen. Weitere Details: http://progit.org/book/ch2-2.html – seanbun

+0

Sorry @RRN. Bernstein hat Recht. Ihre Lösung wäre effizienter. – seanbun