2016-07-03 14 views
0

ich die folgende Situation: Lokale, gegabelt und maßgeschneiderte git Projekt, das nicht die Ordnerstruktur der Quelle beibehalten hat.Merge Fern in lokalen Unterverzeichnis eines git Projekt

~/dwm/dwm/* and ~/dwm/dwmstatus/* ist die neue Struktur meines git Projekt.

Ich wollte jetzt die neueste Quelle in meinem lokalen Repo patchen. I git remote add http://git.suckless.org/dwm/ und einen Zug ausführen.

Was passiert ist, dass der Pull ignoriert die Unterverzeichnisse (wie sollte es zuerst wissen) und macht einen vollen Zug in ~/dwm/*.

Frage: Wie kann ich von der Quelle entfernt in die ~/DWM/DWM/* Unterordner fusionieren? Was ich versucht habe: git checkout HEAD dwm/ und dann einen Pull durchführen. Dies hat nicht den Zweck erfüllt, da das Verzeichnis bereits auf dem neuesten Stand war.

+0

Wenn Sie Ihre strukturelle Änderungen begangen hatte, diese mehr oder weniger sollte gerade gearbeitet haben. –

+0

@OliverCharlesworth: Ich habe keinen Einfluss auf das Quell-Repository. Ich habe es abgezweigt, die alte Fernbedienung entfernt und sie durch meine Github-Fernbedienung ersetzt. Die GitHub-Fernbedienung ist sich meiner strukturellen Veränderungen bewusst. Aber die Quellfernbedienung ist nicht. Oder habe ich deinen Hinweis missverstanden? – Haini

+0

Oh, vielleicht habe ich deine Erklärung nicht verfolgt. Sie haben diese strukturellen Änderungen in einem * remote * vorgenommen, nicht in Ihrem lokalen Klon? –

Antwort

0

In Ihrer Beschreibung ist unklar, welche Folge von Aktionen Sie ausgeführt haben. Aber wenn Ihr gegabelt Repo (nennen wir es fork) streng vor Ihrem ursprünglichen Repo ist (nennen wir es original), dann als neue Fern in Ihrem lokalen Repo-Einstellung und ziehen aus sollte die Umstrukturierung repliziert wurden.

Arbeitete Beispiel:

## Create original repo ## 
git init original 
cd original 
echo "a" > a.txt 
echo "b" > b.txt 
git add . 
git commit -m "Initial commit" 
cd .. 

## Clone the original (this is your local copy) ## 
git clone original local 

## Emulate fork with restructured content ## 
cp -r original fork 
cd fork 
mkdir c d 
mv a.txt c 
mv b.txt d 
git add . 
git commit -m "Move stuff around" 
cd .. 

## Add the fork as a remote and pulling ## 
cd local 
git remote add fork ../fork 
git pull fork master 
+0

Nachdem ich eine Weile mit Ihrer Lösung herumgebastelt habe, sehe ich, wie es funktionieren soll und habe es an meine Bedürfnisse angepasst. Vielen Dank! – Haini