Jak mogę usunąć plik z git repo?
Dodałem plik o nazwie "file1.txt"
do git repo. Następnie dodałem kilka katalogów o nazwie dir1
i dir2
i przekazałem je do git repo.
Teraz obecny repo mA "file1.txt"
, dir1
i dir2
.
Jak mogę usunąć "file1.txt"
bez wpływu na inne, takie jak dir1
i dir2
?
17 answers
Użycie git rm
:
git rm file1.txt
git commit -m "remove file1.txt"
Ale jeśli chcesz usunąć plik tylko z repozytorium Git, a nie usunąć go z systemu plików, użyj:
git rm --cached file1.txt
git commit -m "remove file1.txt"
I wypychanie zmian do zdalnego repo
git push origin branch_name
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-10-27 09:30:41
git rm file.txt
usuwa plik z repo, ale usuwa go również z lokalnego systemu plików .
Aby usunąć plik z repo i Nie usuń go z lokalnego systemu plików użyj:git rm --cached file.txt
Poniżej znajduje się sytuacja, w której używam Gita do utrzymywania kontroli wersji dla mojej biznesowej strony internetowej, ale katalog "mickey" był folderem tmp, aby udostępniać prywatne treści programistom CAD. Kiedy potrzebował ogromnych plików, zrobiłem prywatny, niepowiązany katalog i ftpd pliki tam dla niego do pobrania przez przeglądarkę. Zapominając, że to zrobiłem, wykonałem później git add -A
z katalogu podstawowego strony. Następnie git status
pokazał nowe pliki wymagające zatwierdzenia. Teraz musiałem usunąć je ze śledzenia i kontroli wersji Gita...
Przykładowy wynik poniżej pochodzi z tego, co właśnie mi się przydarzyło, gdzie przypadkowo usunąłem plik .003
. Na szczęście nie obchodzi mnie, co się stało z lokalną kopią .003
, ale niektóre inne aktualnie zmienione pliki były aktualizacjami Właśnie się na stronie i byłoby epic, aby zostały usunięte w lokalnym systemie plików! "Lokalny system plików" = witryna NA ŻYWO (nie jest to wielka praktyka, ale jest rzeczywistością) .
[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003
error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications
(use --cached to keep the file, or -f to force removal)
[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003
rm 'shop/mickey/mtt_flange_SCN.7z.003'
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: shop/mickey/mtt_flange_SCN.7z.001
# modified: shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002
rm 'shop/mickey/mtt_flange_SCN.7z.002'
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.002
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# modified: shop/mickey/mtt_flange_SCN.7z.001
[~/www]$
Update: ta odpowiedź jest coraz trochę ruchu, więc pomyślałem, że wspomnę mój inne Git answer dzieli się kilkoma świetnymi zasobami: ta strona ma grafikę, która pomaga demystify Git dla mnie. Książka "Pro Git" jest online i bardzo mi pomaga.
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:02:49
Jeśli Twój plik jest już na Githubie, teraz (lipiec 2013) Możesz bezpośrednio usunąć go z interfejsu WWW!
Wystarczy wyświetlić dowolny plik w repozytorium, kliknąć ikonę kosza na górze i zatwierdzić usunięcie, tak jak każda inna edycja internetowa.
(commit będzie odzwierciedlał usunięcie tego pliku):
I tak po prostu zniknęło.
Aby uzyskać pomoc z tymi funkcjami, koniecznie przeczytaj naszą pomoc artykuły o tworzenie, przeprowadzki, zmiana nazwy i usuwanie plików .
Uwaga: ponieważ jest to system kontroli wersji, Git zawsze ma cię za plecami, jeśli chcesz odzyskać plik później.
Ostatnie zdanie oznacza, że usunięty plik nadal jest częścią historii i można go łatwo przywrócić (ale jeszcze nie za pomocą interfejsu WWW GitHub):
Zobacz " Restore a deleted file in a Git repo".
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 11:47:32
To jedyna opcja, która mi pomogła.
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.sql'
Uwaga: Zastąp *.sql z nazwą pliku lub typem pliku. Bądź bardzo ostrożny, ponieważ przejdzie to przez każdy commit i zgarnie ten typ pliku.
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-02-27 19:39:16
Dodatkowo, jeśli jest to folder do usunięcia i kolejne foldery podrzędne lub pliki, użyj:
git rm -r 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
2016-04-28 13:12:31
Ogólnie rzecz biorąc, git help
pomoże przynajmniej w prostych pytaniach takich jak:
zhasper@berens:/media/Kindle/documents$ git help
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]
The most commonly used git commands are:
add Add file contents to the index
:
rm Remove files from the working tree and from the index
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
2010-01-12 08:21:03
Jeśli chcesz usunąć plik z repo, ale pozostaw go w systemie plików (nie będzie śledzony):
bykov@gitserver:~/temp> git rm --cached file1.txt
bykov@gitserver:~/temp> git commit -m "remove file1.txt from the repo"
Jeśli chcesz usunąć plik z repo i z systemu plików, są dwie opcje:
-
Jeśli plik nie ma zmian w indeksie:
bykov@gitserver:~/temp> git rm file1.txt bykov@gitserver:~/temp> git commit -m "remove file1.txt"
-
Jeśli plik ma zmiany w indeksie:
bykov@gitserver:~/temp> git rm -f file1.txt bykov@gitserver:~/temp> git commit -m "remove file1.txt"
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-03-20 12:31:35
git rm
od teraz usunie tylko Plik z tej gałęzi, ale pozostanie on w historii i git będzie go pamiętał.
Dobrym sposobem na to jest git filter-branch
, Jak inni tu wspominali. Przepisze każdy commit w historii gałęzi, aby usunąć ten plik.
Ale nawet po zrobieniu tego, git może to zapamiętać, ponieważ mogą być do niego odniesienia w reflog, remotes, tagach i tym podobnych.
Jeśli chcesz całkowicie go zniszczyć w jednym kroku, zalecam użycie git forget-blob
To proste, po prostu zrób git forget-blob file1.txt
.
Spowoduje to usunięcie wszystkich referencji, wykonanie git filter-branch
i na koniec uruchomienie git garbage collector git gc
, aby całkowicie pozbyć się tego pliku w repo.
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-01-23 12:56:04
Inny sposób, jeśli chcesz usunąć plik z folderu lokalnego za pomocą polecenia rm, a następnie przenieść zmiany na serwer zdalny.
rm file1.txt
git commit -a -m "Deleting files"
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-10-06 03:07:44
Aby usunąć określony plik
Git RM nazwa pliku
Aby wyczyścić wszystkie Nie śledzone pliki z katalogu rekurencyjnie w jednym ujęciu
Git clean-fdx
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-08-23 13:56:08
Jeśli masz aplikację GitHub dla Windows, możesz usunąć plik w 5 prostych krokach:
- Kliknij Synchronizuj.
- Kliknij katalog, w którym znajduje się plik i wybierz swoją najnowszą wersję pliku.
- Kliknij na Narzędzia i wybierz " Otwórz powłokę tutaj."
- w powłoce wpisz: "rm {filename}" i naciśnij enter.
- Zatwierdź zmianę i zsynchronizuj.
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-03-15 18:52:55
W moim przypadku próbowałem usunąć plik na GitHubie po kilku commitach ale zapisałem na komputerze
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch file_name_with_path' HEAD
git push --force -u origin master
I później ten plik został zignorowany
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-08-23 12:03:21
-
Najpierw usuń pliki z lokalnego repozytorium.
Git RM-R nazwa pliku
Lub usuń pliki tylko z lokalnego repozytorium, ale z systemu plików
Git RM --cached File-Name
-
Po Drugie, zatwierdź zmiany do lokalnego repozytorium.
git commit -m "unwanted files or some inline comments"
-
Na koniec zaktualizuj / wypchnij lokalne zmiany do zdalnego repozytorium.
git push
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-10-18 04:00:50
Wypróbowałem wiele sugerowanych opcji i żadna nie zadziałała (nie wymienię różnych problemów). To, co zrobiłem, co działało, było proste i intuicyjne (dla mnie) to:
- Przenieś cały lokalny repo gdzie indziej
- Sklonuj repo ponownie z master na lokalny dysk
- Skopiuj pliki / folder z oryginalnej kopii w #1 z powrotem do nowego klona z #2
- Upewnij się, że problem duży plik nie jest tam lub wykluczone w .gitignore plik
- Wykonaj zwykły git add/git commit / git push
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-21 18:22:23
Mam pliki obj i bin, które przypadkowo trafiły do repo, że nie chcę zanieczyszczać listy "zmienionych plików"
po zauważyłem, że poszli do pilota, zignorowałem je dodając to do .gitignore
/*/obj
/*/bin
Problem polega na tym, że są już w zdalnym, a gdy zostaną zmienione, wyskakują jako zmienione i zanieczyszczają zmienioną listę plików.
Aby przestać je widzieć, musisz usunąć cały folder ze zdalnego repozytorium.
W poleceniu prompt:
- CD do folderu repo (tzn.
C:\repos\MyRepo
) - chcę usunąć SSIS \ obj. Wydaje się, że można usunąć tylko na najwyższym poziomie, więc teraz musisz CD do SSIS: (tj.
C:\repos\MyRepo\SSIS
) - Teraz wpisz magiczne zaklęcie
git rm -r -f obj
- rm = Usuń
- - r = rekurencyjnie Usuń
- -f = oznacza siłę, bo naprawdę to masz na myśli
- obj to folder
- teraz biegnij
git commit -m "remove obj folder"
Dostałem alarmującą wiadomość mówiącą 13 plików zmieniono 315222 delecje
W związku z tym, że nie chciałem szukać linii CMD, wszedłem do Visual Sstudio i wykonałem synchronizację, aby zastosować ją do pilotaWarning: 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-07-28 10:07:25
Po usunięciu pliku z repo za pomocą git rm
możesz użyć BFG Repo-Cleaner, aby całkowicie i łatwo usunąć plik z historii repo.
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-30 17:26:37
Incase jeśli nie plik w lokalnym repo, ale w git repo, po prostu otwórz plik w git repo poprzez interfejs webowy i znajdź przycisk Delete w prawym rogu interfejsu. Kliknij tutaj, aby wyświetlić opcję Usuń Interfejs
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-11-30 15:47:09