2016-07-08 7 views
3

Ich entwickle Code mit einem anderen Programmierer. Da ich am Anfang neue Module hinzufügen musste, ohne den vorhandenen Code zu ändern, habe ich den Quellcode des anderen Programmierers kopiert und ich begann meinen zu entwickeln. Da ich immer mit Git arbeite, habe ich ein Git-Repository eingerichtet und einige Commits durchgeführt.Erstelle ein git bare Repo von zwei existierenden Repositories

Jetzt änderte der andere Programmierer einen Teil seines Codes und ich musste auch einige der Teile ändern, die ich am Anfang nicht ändern sollte. So ist die Situation nun folgende:

  • Ich habe eine lokale Git Repo mit modifizierten Dateien und neuen Dateien
  • Der andere Programmierer einen Ordner hat (ohne git) mit modifizierten Dateien

Wir wolud mag unsere Änderungen zusammenführen und beginnen, git zu verwenden. Ich habe versucht, ein leeres Repo in einem freigegebenen Ordner mit seinem Code als Ausgangspunkt zu erstellen (d. H. git --bare in seinem zuvor nicht geordneten Ordner). Dann habe ich diesen Repo zu meinem Remote-Befehl mit git remote add origin /path/to/local/bare/repo hinzugefügt. Dann habe ich versucht, meine Änderungen zu schieben (die Konflikte enthalten kann) mit push origin master, aber ich GEOT die folgende Meldung:

Everything up-to-date

Allerdings, wenn ich an meinem Quellcode schauen und an dem einen in den nackten Repo, mein Änderungen sind nicht vorhanden.

Wie kann ich zwei Codes, einen ohne git und den anderen mit git, in das gleiche bare Repository marginieren, um eine gemeinsame Versionskontrolle zu starten?

Antwort

0

Schritt 1: Angenommen, Ihr Freund hat git init --bare erstellt, um ein blankes Repo zu erstellen. Kopieren Sie die Änderungen Ihres Freundes hier. Dieses Verzeichnis fungiert hier als gemeinsamer zentraler Speicher.

Schritt 2: Sobald Sie sicher sind, wenn Schritt 1 abgeschlossen ist zu tun nach dem, wenn Sie mit Ihrem lokalen Commits fertig sind:

1. git pull origin <branch> --> At this point you must see if there are new files/changes 
2. git merge <branch> --> At this point you must see conflicts and modifications 
3. git push origin <branch> 
+2

Das wäre korrekt, wenn beide Zweige in Git wären, aber leider hat sein Freund RAW-Dateien, die nicht Git-versioniert sind. –

+0

@TimBiegeleisen: Einverstanden! Entsprechend modifiziert. Danke für die Hervorhebung ... –

1

Sie könnten eine brillante Antwort von @VonC oder @torek zu bekommen, aber aus der Spitze von meinem Kopf einer Möglichkeit wäre, eine Niederlassung von Ihrem Git versioniert Code zu erstellen und diese dann für die Zusammenführung verwenden. In diesen neuen Zweig können Sie Ihre Dateien mit denen, die Ihr Freund geändert hat, überschreiben. Also, wenn Ihr Stromzweig master sind, könnten Sie die folgenden Schritte ausführen:

git checkout master      # switch to 'master' branch 
git checkout -b merge_branch   # create 'merge_branch' from 'master' 
cp -r /path/to/friend/ /path/to/you/ # copy friend's files into merge branch 
git commit -m 'changes from friend'  # commit this friend's work 
git checkout master      # back to the 'master' branch 
git merge merge_branch     # merge with friend's work 

Sie werden jetzt wahrscheinlich eine Tonne Konflikte haben, aber zumindest kann es innerhalb von Git behandelt werden. Ich sollte auch erwähnen, dass dies nur funktioniert, wenn Ihr Freund die gleiche oder fast die gleiche Projektdateistruktur hat. Wenn Ihr Freund Dateien hat, die sich an verschiedenen Orten befinden oder andere Dinge genannt werden, funktioniert dieser Ansatz nicht.

+1

Klingt genug brillant. +1. Ich würde eine Verzweigung von der anfänglichen Festschreibung machen, und 'git add --work-tree =/Pfad/zu/other/coder add.', Dann füge die zwei Zweige zusammen. – VonC

Verwandte Themen