2014-01-07 10 views
5

ich ein git Projekt, das ein großes Stammverzeichnis hat:git subtree split - die Tags werden nicht übertragen

C:\MyProject\MyProject 
C:\MyProject\.git 

Und dann die Dateien und Unterverzeichnisse sind alle innerhalb . Ich mag, dass redundantes Root-Verzeichnis entfernen, so habe ich diesen Befehl ein:

git subtree split -P MyProject -b MyBranch 
git checkout MyBranch 
git branch -D master 
git branch -m MyBranch master 

Es gibt ein Problem mit dieser Lösung ist jedoch - die Tags noch auf den nun gelöscht angebracht sind, Original-Master-Zweig:

enter image description here

der graue Zweig ist der Original-Master-Zweig, der rote Zweig die neuen ohne redundantes Verzeichnis, aber die Tags sind noch auf den alten Zweig des checkins angebracht.

+0

Tags zeigen auf bestimmte Commits. Ihre Teilbaumoperationen erstellen eine neue Gruppe von Commits (gewährt, ein Teil des Inhalts ist immer noch derselbe, aber es sind neue Commits). Wenn Sie die Tags verschieben müssen, müssen Sie dies manuell tun. – twalberg

+0

In meinem Fall ist es nicht "einige", es gibt eine 1-1 Korrespondenz für alle Commits, ich muss nur das redundante Root-Verzeichnis entfernen. Aber ja, leider scheint es so zu sein. Ich habe nur überprüft und die Tags sind insgesamt 10, also werde ich sie von Hand "migrieren". – sashoalm

Antwort

2

git filter-branch möglicherweise in der Lage sein, die Bewegung, die Sie wollen, und migrieren alle Zweige und andere Referenzen, wie Tags. Die --subdirectory-filter wird eine Operation ähnlich der Unterstruktur tun, die Sie erstellen:

git filter-branch --prune-empty --subdirectory-filter subDirectory -- --all 

Check this other answer für eine bessere Detail auf, wie für diese Art von Betrieb des Repository einzurichten.

1

versuchte ich

git filter-branch --prune-empty --subdirectory-filter <ProjectSubFolder> 
--tag-name-filter cat -- --branches 

, dass die Tags zu übertragen, sondern einen baumelnde Zweig mit Tracking-Referenzen gehalten, damit ich mit der Hand der Datei .git \ Refs \ original \ Refs \ Köpfen Master \ entfernt und der baumelnden Zweig dissappeared .