Usuń katalog ze zdalnego repozytorium po dodaniu ich do.gitignore
Zobowiązałem się i wrzuciłem jakiś katalog do Githuba. Następnie zmieniłem plik .gitignore
dodając katalog, który powinien być ignorowany. Wszystko działa dobrze, ale (teraz ignorowany) katalog pozostaje na GitHubie.
Jak usunąć ten katalog z github i historię repozytorium?
7 answers
Zasady zawarte w pliku .gitignore
dotyczą tylko Plików nie śledzonych. Ponieważ pliki w tym katalogu zostały już zatwierdzone w Twoim repozytorium, musisz je usunąć, utworzyć commit i wysłać do GitHub:
git rm -r --cached some-directory
git commit -m 'Remove the now ignored directory "some-directory"'
git push origin master
Nie możesz usunąć pliku z historii bez przepisania historii repozytorium - nie powinieneś tego robić, jeśli ktoś inny pracuje z Twoim repozytorium lub używasz go z wielu komputerów. Jeśli nadal chcesz to zrobić, możesz użyć git filter-branch
, aby przepisz historię - tutaj znajduje się pomocny przewodnik .
Dodatkowo zwróć uwagę, że wyjście z git rm -r --cached some-directory
będzie wyglądać następująco:
rm 'some-directory/product/cache/1/small_image/130x130/small_image.jpg'
rm 'some-directory/product/cache/1/small_image/135x/small_image.jpg'
rm 'some-directory/.htaccess'
rm 'some-directory/logo.jpg'
{[5] } to informacja zwrotna od Gita o repozytorium; pliki są nadal w katalogu roboczym.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-19 20:52:23
Robię to:
git rm --cached `git ls-files -i --exclude-from=.gitignore`
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
Który usunie wszystkie pliki / foldery znajdujące się w Twoim git ignore, zapisując musisz wybrać każdy ręcznie
To chyba przestało działać dla mnie, teraz to robię:
git rm -r --cached .
git add .
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-24 17:54:14
Jak na moją odpowiedź tutaj: Jak usunąć katalog z repozytorium git?
Aby usunąć folder / Katalog tylko z repozytorium git, a nie z lokalnego spróbuj wykonać 3 proste kroki.
Kroki usuwania katalogu
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
Kroki, aby zignorować ten folder w następnym zatwierdzeniu
Aby zignorować ten folder z kolejnych commitów, należy utworzyć jeden plik w katalogu głównym o nazwie .gitignore i włóż do niego nazwę folderów. Możesz umieścić tyle, ile chcesz
.gitignore plik będzie wyglądał tak
/FolderName
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:36
Odpowiedź Blundella powinna zadziałać, ale z jakiegoś dziwnego powodu nie zadziałała u mnie. Musiałem najpierw przenieść nazwy plików wypisane przez pierwsze polecenie do pliku, a następnie zapętlić ten plik i usunąć ten plik jeden po drugim.
git ls-files -i --exclude-from=.gitignore > to_remove.txt
while read line; do `git rm -r --cached "$line"`; done < to_remove.txt
rm to_remove.txt
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-30 13:04:14
Pierwsza odpowiedź Blundella nie zadziałała. Jednak to pokazało mi właściwą drogę. Zrobiłem to samo:
> for i in `git ls-files -i --exclude-from=.gitignore`; do git rm --cached $i; done
> git commit -m 'Removed all files that are in the .gitignore'
> git push origin master
Radzę najpierw sprawdzić pliki do usunięcia, uruchamiając poniższą instrukcję:
git ls-files -i --exclude-from=.gitignore
Używałem domyślnego .plik gitignore dla visual studio i zauważyłem, że usuwał wszystkie foldery log i bin w projekcie, co nie było moim zamierzonym działaniem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-07 12:14:26
Uwaga: To rozwiązanie działa tylko z Github Desktop GUI.
Używając Github Desktop GUI jest to bardzo proste.
Tymczasowo przenieś folder do innej lokalizacji (do folderu poza projektem).
Edytuj swój plik
.gitignore
i usuń wpis folderu, który byłby remove master repozytorium na stronie github.Zatwierdź i zsynchronizuj folder projektu.
-
Ponownie przenieś folder do projektu folder
Re-Edytuj plik
.gitignore
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-21 09:55:27
Jeśli pracujesz z PowerShell, spróbuj wykonać następujące polecenie jako jedno polecenie.
PS MyRepo> git filter-branch --force --index-filter
>> "git rm --cached --ignore-unmatch -r .\\\path\\\to\\\directory"
>> --prune-empty --tag-name-filter cat -- --all
Następnie, git push --force --all
.
Dokumentacja: https://git-scm.com/docs/git-filter-branch
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 22:09:10