Jak usunąć wszystkie zmiany z katalogu roboczego, w tym nowe nieśledzone pliki. Wiem, że to git checkout -frobi, ale nie usuwa nowych nieśledzonych plików utworzonych od ostatniego zatwierdzenia.
Czy ktoś ma pomysł, jak to zrobić?
Jak usunąć wszystkie zmiany z katalogu roboczego, w tym nowe nieśledzone pliki. Wiem, że to git checkout -frobi, ale nie usuwa nowych nieśledzonych plików utworzonych od ostatniego zatwierdzenia.
Czy ktoś ma pomysł, jak to zrobić?
Odpowiedzi:
git reset --hard # removes staged and working directory changes
## !! be very careful with these !!
## you may end up deleting what you don't want to
## read comments and manual.
git clean -f -d # remove untracked
git clean -f -x -d # CAUTION: as above but removes ignored files like config.
git clean -fxd :/ # CAUTION: as above, but cleans untracked and ignored files through the entire repo (without :/, the operation affects only the current directory)
Aby zobaczyć, co zostanie wcześniej usunięte, bez faktycznego usuwania, użyj -nflagi (jest to w zasadzie test). Gdy będziesz gotowy do faktycznego usunięcia, usuń -nflagę:
git clean -nfd
git clean -fxdmoże być NAPRAWDĘ niebezpieczny, jeśli nie wiesz, co robisz. Może to spowodować trwałe usunięcie niektórych bardzo ważnych nieśledzonych plików, takich jak baza danych itp. Zachowaj ostrożność.
git clean -f -dusunie także pliki z ignorowanych folderów. Więc wszystkie lokalne logi i tego typu rzeczy znikną. Zwykle nie jest to duży problem, ale lepiej wiedzieć.
Najbezpieczniejsza metoda, z której często korzystam:
git clean -fd
Wyjaśnienie składni jak na /docs/git-cleanstronie:
-f(alias:) --force. Jeśli zmienna konfiguracyjna Git clean.requireForce nie jest ustawiona na wartość false, git clean odmówi usunięcia plików lub katalogów, chyba że podano -f, -n lub -i. Git odmówi usunięcia katalogów z podkatalogiem lub plikiem .git, chyba że podano drugie -f.-d. Usuń nieśledzone katalogi oprócz nieśledzonych plików. Jeśli nieśledzony katalog jest zarządzany przez inne repozytorium Git, domyślnie nie jest usuwany. Użyj opcji -f dwa razy, jeśli naprawdę chcesz usunąć taki katalog.Jak wspomniano w komentarzach, może być lepszym rozwiązaniem, git clean -ndktóry wykonuje próbę na sucho i mówi, co należy usunąć przed faktycznym usunięciem.
Link do git cleanstrony z dokumentami:
https://git-scm.com/docs/git-clean
git clean -nd .przed faktycznym usunięciem plików korzystałem zgit clean -fd .
add -A+ commit -a+ revert headwcześniej git clean. Przeglądanie każdego usunięcia po prostu nie jest skalowane w przypadku głównych scenariuszy. Również suchobieg nie jest srebrną kulą: co, jeśli coś przeoczyłeś lub popełniłeś błąd podczas przeglądu?
Do wszystkich plików niestacjonarnych użyj:
git checkout -- .
.Na końcu jest ważna.
Możesz zastąpić .nazwą podkatalogu, aby wyczyścić tylko określony podkatalog swojego projektu. Problem został rozwiązany właśnie tutaj .
src/app/work/filename.jsi ../app/working/test/filename.js. Samo użycie git checkout -- .w gałęzi usunęło tylko pierwszy plik ( bez wiodącego ../ ). Musiałem więc przejść cd ../do drugiego katalogu lokalizacji, aby usunąć drugi plik za pomocą tego polecenia.
Spójrz na git clean polecenie.
git-clean - Usuń nieśledzone pliki z działającego drzewa
Czyści drzewo robocze, rekurencyjnie usuwając pliki, które nie są pod kontrolą wersji, zaczynając od bieżącego katalogu.
Zwykle usuwane są tylko pliki nieznane git, ale jeśli podano opcję -x, pliki ignorowane są również usuwane. Może to być na przykład przydatne do usunięcia wszystkich produktów kompilacji.
git clean -ii wybrałem „czyste” z menu - to w końcu usunęło nowe pliki.
Następujące prace:
git add -A .
git stash
git stash drop stash@{0}
Pamiętaj, że spowoduje to odrzucenie zarówno lokalnych, jak i tymczasowych zmian lokalnych. Dlatego przed uruchomieniem tych poleceń powinieneś zatwierdzić wszystko, co chcesz zachować.
Typowy przypadek użycia: przeniesiono wiele plików lub katalogów, a następnie chcesz wrócić do pierwotnego stanu.
git stash drop?
git add -A .). Straciłem 30 m, ponieważ nie było dopasowania pliku. Dzięki!
Możesz to zrobić w dwóch krokach:
git checkout -fgit clean -fdMyślałem, że tak ( ostrzeżenie: usunięcie spowoduje wszystko )
$ git reset --hard HEAD
$ git clean -fd
The resetAby cofnąć zmiany. cleanCelu usunięcia untracked f iles i d irectories.
git pullpóźniej: CONFLICT (content): Merge conflict in...Rozwiązałem to tylko przezgit pull --strategy=ours
git reset --hard origin/{branchName}
Spowoduje to usunięcie wszystkich nieśledzonych plików.
Alternatywnym rozwiązaniem jest zatwierdzenie zmian, a następnie pozbycie się tych zmian. Na początku nie ma to natychmiastowej korzyści, ale otwiera możliwość zatwierdzania fragmentów i tworzenia tagu git do tworzenia kopii zapasowych.
Możesz to zrobić w bieżącym oddziale, w następujący sposób:
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
Lub możesz to zrobić na odłączonym HEAD. (zakładając, że zaczynasz w gałęzi BRANCHNAME):
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
Jednak zwykle robię to w kawałkach, a następnie nazywam niektóre lub wszystkie zatwierdzenia jako „ODRZUĆ: ...”. Następnie użyj interaktywnego rebase, aby usunąć złe zatwierdzenia i zachować dobre.
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
Jest to bardziej szczegółowe, ale pozwala dokładnie sprawdzić, które zmiany chcesz odrzucić.
Te git loligit lola skróty zostały bardzo pomocny w tej pracy.
W przypadku określonego folderu użyłem:
git checkout -- FolderToClean/*
Jest to prawdopodobnie odpowiedź noob, ale: Używam TortoiseGit dla systemu Windows i ma przyjemną funkcję o nazwie REVERT. Tak więc, aby cofnąć lokalne niestacjonarne nieprzesłane zmiany, należy:
git help resetigit help clean