Usunąłem niektóre pliki i pokazuje status git jak poniżej.
Popełniłem i popchnąłem.
GitHub nadal pokazuje usunięte pliki w repozytorium. Jak mogę usunąć pliki z repozytorium GitHub?
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: modules/welcome/language/english/kaimonokago_lang.php
# deleted: modules/welcome/language/french/kaimonokago_lang.php
# deleted: modules/welcome/language/german/kaimonokago_lang.php
# deleted: modules/welcome/language/norwegian/kaimonokago_lang.php
Jeśli używam git rm
, daje to następujące.
usage: git rm [options] [--] <file>...
-n, --dry-run dry run
-q, --quiet do not list removed files
--cached only remove from the index
-f, --force override the up-to-date check
-r allow recursive removal
--ignore-unmatch exit with a zero status even if nothing matched
Odpowiedzi:
aktualizuje wszystkie twoje zmiany
źródło
Bądź bardzo ostrożny
git rm .
; może usunąć więcej niż chcesz. Oczywiście możesz wyzdrowieć, ale łatwiej jest tego nie robić.Najprostsze byłoby:
Nie możesz używać symboli wieloznacznych powłoki, ponieważ pliki nie istnieją, ale możesz użyć (przynajmniej w Bash):
Lub rozważ:
Trwa to wyjście
git status
, nic nie drukuje (domyślniesed -n
), ale na liniach, które są uruchamiane# deleted:
, to pozbywa się#
adeleted:
i drukuje co pozostało;xargs
zbiera argumenty i przekazuje je dogit rm
polecenia. Działa to dla dowolnej liczby plików bez względu na podobieństwo (lub odmienność) w nazwach.źródło
git diff --diff-filter=D --name-only -z | xargs -0 git rm
jest bardziej niezawodnym podejściem niż próba parsowania,git status
która jest zorientowana na użytkownika i nie gwarantuje stabilności w przyszłych wersjach.git diff
(których nie miałem, wcześniej nie miałem takiej potrzeby). Dzięki!git ls-files --deleted | xargs git rm
zrobiłem dla mnie lewę.Inną wersją odpowiedzi ByScripts jest
Spowoduje to WYŁĄCZNIE usunięcie usuniętych plików z git.
Można go również wykorzystać do dodawania TYLKO zmodyfikowanych plików.
Te polecenia działają również w gitbash dla Windows.
źródło
git ls-files
ze statusem usuniętym lub zmodyfikowanym jest bardzo pomocny.'git add --update (or -u)'
się bez argumentu ścieżki z podkatalogu drzewa zmieni się w Git 2.0 i nie powinno być już używane. Aby dodać zawartość do całego drzewa, uruchom:git add --update :/
(lub git add -u: /) Aby ograniczyć polecenie do bieżącego katalogu, uruchom:git add --update .
(lub git add -u.) W bieżącej wersji Git polecenie jest ograniczone do katalog bieżącysrc/my spaced directory/myfile
. Można to rozwiązać indywidualnie, ale jak można to zrobić za pomocą poleceń zawartych w tej odpowiedzi?Zaktualizuj wszystkie wprowadzone zmiany:
Usunięte pliki powinny zmienić się z niestabilnego (zwykle kolor czerwony) na etapowe (zielony). Następnie potwierdź usunięcie usuniętych plików:
źródło
Najlepszym rozwiązaniem, jeśli nie obchodzi Cię przemieszczanie zmodyfikowanych plików, jest użycie,
git add -u
jak mówią mshameers i / lub pb2q .Jeśli chcesz po prostu usunąć usunięte pliki, ale nie wprowadzasz żadnych zmodyfikowanych plików, myślę, że powinieneś użyć
ls-files
argumentu z--deleted
opcją (nie musisz używać wyrażenia regularnego ani innych złożonych argumentów / opcji):źródło
git add -A
rozwiązuje ten problem ... na wypadek, gdyby ktoś chciał wiedzieć w przyszłości. sprawdź poniższą odpowiedźTak,
git rm <filename>
wyreżyseruje stan usuniętego pliku, gdzie<filename>
może być wzorzec globalny:Następnie możesz zatwierdzić.
git commit -a
zrobię to za jednym razem, jeśli chcesz.Możesz także użyć,
git add -u
aby wprowadzić wszystkie zmiany, w tym wszystkie usunięte pliki, a następnie zatwierdzić.źródło
git add -u
to, że dokładnie tego szukamy - jeśli wykonasz wiele operacji usunięcia, a następnie zechcesz dokonać wszystkich operacji usuwania, wydaje się, że jest to najłatwiejszy i najbardziej „standardowy” sposób (to znaczy bez globów specyficznych dla danego przypadku lub złożonego przetwarzania powłoki w xargs). Czy jest jakiś powód, dla którego nie chcielibyśmy tego używać, oprócz faktu, że dodaje on wszystkie zmiany naraz?Kiedy mam wiele usuniętych przeze mnie plików, które nie są wystawiane do zatwierdzenia, możesz
git rm
je wszystkie w jednym programie:Jak wspomniano w odpowiedzi na pytanie, bądź ostrożny
git rm
.źródło
Spróbuj tego:
źródło
Możesz użyć
Po ręcznym usunięciu plików.
źródło
Możesz utworzyć skrypt powłoki, który usunie wszystkie twoje pliki po uruchomieniu:
Skrypt, który jest tworzony
remove.sh
, zawiera pełną listęgit rm
poleceń.źródło
źródło
źródło
Jeśli chcesz usunąć je wszystkie za pomocą „git rm”. Tym się właśnie zajmuję:
To zapytanie zawiera listę wszystkich plików, które zostały usunięte i usuwa je z repozytorium git. Mam nadzieję, że to pomoże.
źródło
Wbudowana funkcja czyszczenia może być również pomocna ...
źródło
Miałem problem z plikami ducha pojawiającymi się w moim repozytorium po ich usunięciu i napotkaniu tego porządnego polecenia!
git add -A
Zasadniczo jest to samo
git add -a
igit add -u
połączone, ale rozróżnia duże i małe litery. Mam go z tego niesamowitego linku (ten link wskazuje teraz wersję na archive.org, ponieważ oryginał został przekształcony w stronę spamu / phishingu w czerwcu 2016 r.)źródło
Oto jak wykryć usunięte pliki i wprowadzić etap ich usuwania w ramach następnego zatwierdzenia. Wszystkie rozwiązania w tym wątku mają różne zalety. To rozwiązanie w szczególności dotyczy problemu nazw plików ze spacjami.
upewnij się, że przetestowałeś to z opcją --dry-run gita przed uruchomieniem go z następującymi:
wyjaśnienie:
Spowoduje to wydrukowanie czegoś takiego jak D „/ ścieżka do folderu / ścieżka do pliku”, co dzieje się tylko wtedy, gdy w nazwach ścieżek są spacje
dopasuj tylko linie rozpoczynające się od „D”
usuń „D” z przodu każdego łańcucha
usuń cytaty, jeśli istnieją
zdefiniuj zmienne nazw plików jako {} uruchom nazwę pliku w git rm ujętym w pojedyncze cudzysłowy, aby upewnić się, że obsługuje nazwy plików ze spacjami.
źródło