Usuń plik z repozytorium Git bez usuwania go z lokalnego systemu plików
Mój początkowy commit zawierał pliki dziennika. Dodałem *log
do mojego .gitignore
, a teraz chcę usunąć Pliki dziennika z mojego repozytorium.
git rm mylogfile.log
Usunie plik z repozytorium, ale również usunie go z lokalnego systemu plików.
Jak mogę usunąć ten plik z repo bez usuwania mojej lokalnej kopii pliku?
9 answers
Dla pojedynczego pliku:
git rm --cached mylogfile.log
Dla pojedynczego katalogu:
git rm --cached -r mydirectory
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
2018-03-18 23:51:30
Aby usunąć cały folder z repo( jak pliki Resharper), wykonaj następujące czynności:
git rm -r --cached folderName
Popełniłem kilka plików resharper i nie chciałem, aby były one utrzymywane dla innych użytkowników projektu.
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-10-02 09:25:13
Możesz także usunąć Pliki z repozytorium na podstawie Twojego .gitignore bez usuwania ich z lokalnego systemu plików:
git rm --cached `git ls-files -i -X .gitignore`
Lub, alternatywnie, na Windows Powershell:
git rm --cached $(git ls-files -i -X .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
2017-12-06 17:42:47
Ponadto, jeśli przekazałeś poufne dane (np. plik zawierający hasła), powinieneś całkowicie usunąć je z historii repozytorium. Oto przewodnik wyjaśniający, jak to zrobić: http://help.github.com/remove-sensitive-data/
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
2011-08-21 12:16:36
Zgodnie z moją odpowiedzią tutaj: https://stackoverflow.com/questions/6313126/how-to-remove-a-directory-in-my-github-repository
Aby usunąć folder / katalog lub plik tylko z repozytorium git, a nie z lokalnego spróbuj wykonać 3 proste kroki.
Kroki usuwania katalogu
git rm -r --cached File-or-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-09-04 04:55:24
Bardziej ogólne rozwiązanie:
-
Edycja
.gitignore
pliku.ECHO mylogfile.log >> .gitignore
-
Usuń wszystkie elementy z indeksu.
git rm -r -f --cached .
-
Rebuild index.
git add .
-
Utwórz nowy commit
git commit -m "Removed mylogfile.log"
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-12-13 11:42:32
Git pozwala Ci ignorować te pliki zakładając, że są niezmienione. To odbywa się poprzez uruchomienie polecenia
git update-index --assume-unchanged path/to/file.txt
. Po oznaczeniu pliku jako takiego, git będzie całkowicie zignoruj wszelkie zmiany w tym pliku; nie pojawią się, gdy uruchamianie git status lub Git diff, ani też nigdy nie zostanie popełnione.
(od https://help.github.com/articles/ignoring-files )
Stąd nie usuwanie go, ale ignorowanie zmian w nim na zawsze. Myślę, że to działa tylko lokalnie, więc współpracownicy mogą nadal widzieć zmiany w nim, chyba że wykonają tę samą komendę, co powyżej. (Nadal trzeba to jednak zweryfikować.)
Uwaga: nie jest to odpowiedź bezpośrednio na pytanie, ale opiera się na dalszych pytań w komentarzach innych odpowiedzi.
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
2014-01-28 11:46:49
Powyższe odpowiedzi mi nie odpowiadały. Używałem filter-branch, aby usunąć wszystkie zatwierdzone pliki
Usuń plik z repozytorium git za pomocą:
git filter-branch --tree-filter 'rm file'
Usuń folder z repozytorium git za pomocą:
git filter-branch --tree-filter 'rm -rf directory'
Usuwa katalog lub plik ze wszystkich commitów
Możesz określić commit używając:
git filter-branch --tree-filter 'rm -rf directory' HEAD
Lub zakres
git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD
Aby wcisnąć wszystko do pilota, możesz zrobić:
git push origin master --force
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-01-12 13:59:01
Jeśli chcesz po prostu odłączyć plik i nie usunąć go z lokalnego i zdalnego repo, użyj polecenia thhis:
git update-index --assume-unchanged file_name_with_path
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
2018-09-07 09:05:22