Wiele księżyców temu dodałem poddrzewo do mojego repozytorium git
. To poddrzewo zawierało kilka folderów i plików. Dodałem poddrzewo zamiast tworzyć submoduł (zgodnie z zaleceniami). Teraz zdaję sobie sprawę, że chcę tylko jednego z plików w poddrzewie i żadnej z pozostałych. Co gorsza, kiedy moje repozytorium jest inne, to, co dostają, nie jest tym, czego się spodziewam - jest jakiś konflikt z poddrzewem i innym kodem, który stworzyłem.Jak usunąć wcześniej dodane poddrzewo git i jego historię
mogę jeździć z plików/folderów z
git rm subtree–folder1 subtree_folder2 subtree_files.*
Jednak jestem nadal pozostaje dłuższy popełnienia historii z poddrzewa.
Zrobiłem sporo rozwoju, ponieważ początkowo dodałem poddrzewo i nie mogę stracić historii zatwierdzenia, którą wygenerowałem.
W skrócie jest to, co chciałbym:
- Usuń wszystkie pliki poddrzewie/foldery.
- Zapomnij historię wszystkich zgłoszeń poddrzewa.
- Zostawiłem tylko z moim kodem i moją historią.
Czy to możliwe?
PS. Jedną z możliwych komplikacji jest to, że przeniosłem pojedynczy plik nagłówkowy, który chciałem zatrzymać z poddrzewa do jakiegoś folderu w moim kodzie. Mam nadzieję, że to nie jest to, co powstrzymuje mnie przed zapomnieniem historii podtekstów.
Próba
Po świeżej kasie ze zdalnego serwera mam następujące:
$ ls
.git CMakeLists.txt Read.cpp logging.conf
.gitignore ENDF6 TestData src
.sparse-checkout LICENCE doc test
.travis.yml README.md include tools
Gdzie .gitignore
ma tylko: build/ debug/
Kiedy próbuję polecenie zgodnie z sugestią nie otrzymuję bardzo szczęśliwej odpowiedzi:
$ 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
Nie jestem pewien, dlaczego mówi, że ma problem z test
, kiedy wyraźnie tam jest. Jestem zdziwiony.
Czy próbowałeś po prostu użyć 'git rm', aby usunąć poddrzewo? –
@hunch_hunch Zrobiłem to tak samo jak polecenia tutaj: http://stackoverflow.com/questions/15890047/how-to-remove-history-of-deleted-git-subtree-folder, ale wciąż mam całą historię poddrzewo. Wsparcie! – jlconlin
Masz problem z ponownym zapisywaniem historii repozytorium za pomocą rebase lub gałęzi filtru? –