Vor vielen Monden habe ich einen Teilbaum zu meinem git
Repository hinzugefügt. Dieser Teilbaum enthielt mehrere Ordner und Dateien. Ich habe den Unterbaum hinzugefügt, anstatt ein Submodul zu erstellen (wie empfohlen). Jetzt merke ich, dass ich nur eine der Dateien in der Teilstruktur und keine der restlichen Dateien möchte. Noch schlimmer, wenn andere clone
mein Repository, was sie bekommen, ist nicht das, was erwartet wird - es gibt einige Konflikte mit dem Teilbaum und dem anderen Code, den ich erstellt habe.So entfernen Sie zuvor hinzugefügt git Unterbaum und seine Geschichte
I ride der Dateien/Ordner mit
, ich bin abergit rm subtree–folder1 subtree_folder2 subtree_files.*
bekommen kann immer noch mit einer langen Geschichte von der Unterstruktur begeht links.
Ich habe eine ganze Menge Entwicklung gemacht, seit ich den Teilbaum ursprünglich hinzugefügt habe und den Commit-Verlauf, den ich generiert habe, nicht verlieren kann.
kurz In diesem ist das, was ich möchte:
- Entfernen Sie alle Unterbaum Dateien/Ordner.
- Vergessen Sie die Geschichte aller Teilbaum-Commits.
- Links mit nur meinem Code und meiner Geschichte.
Ist das möglich?
PS. Eine mögliche Komplikation ist, dass ich die einzelne Header-Datei, die ich behalten wollte, aus dem Teilbaum in einen Ordner in meinem Code verschoben habe. Ich hoffe, das ist nicht, was mich davon abhält, die Geschichte der Teilbäume zu vergessen.
Ein Versuch
Nach einer frischen Kasse von dem Remote-Server habe ich die folgenden:
$ ls
.git CMakeLists.txt Read.cpp logging.conf
.gitignore ENDF6 TestData src
.sparse-checkout LICENCE doc test
.travis.yml README.md include tools
Wo .gitignore
nur hat: build/ debug/
Wenn ich versuche, den Befehl wie vorgeschlagen, bekomme ich keine sehr glückliche Antwort:
$ git filter-branch --index-filter 'git rm --cached -rf test tools src doc LICENCE README.md .travis.yml' HEAD
Rewrite 2fec85e41e40ae18efd1b130f55b14166a422c7f (1/1701)fatal: pathspec 'test' did not match any files
index filter failed: git rm --cached -rf test tools src doc LICENCE README.md .travis.yml
Ich bin mir nicht sicher, warum es sagt, es hat ein Problem mit test
, wenn es eindeutig da ist. Ich bin verwirrt.
Haben Sie versucht, einfach 'git rm' zu verwenden, um den Teilbaum zu entfernen? –
@hunch_hunch Ich habe das genauso gemacht wie die Befehle hier: http://stackoverflow.com/questions/15890047/how-to-remove-history-of-deleted-git-subtree-folder, aber ich habe immer noch die ganze Geschichte von der Teilbaum. Hilfe! – jlconlin
Sie können Ihren Repository-Verlauf über Rebase oder Filter-Branch neu schreiben? –