git: cofa wszystkie zmiany w katalogu, w tym nowe pliki

Jak usunąć wszystkie zmiany z katalogu roboczego, w tym nowe Nie śledzone pliki. Wiem, że git checkout -f tak robi, ale nie usuwa nowych Nie śledzonych plików utworzonych od ostatniego zatwierdzenia.

Czy ktoś ma pomysł jak to zrobić?
 967
git
Author: Jim Puls, 2009-07-07

12 answers

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)
 1437
Author: Zitrax,
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-22 11:11:28

Najbezpieczniejsza metoda, z której często korzystam:

git clean -fd

Link do strony git clean doc: https://git-scm.com/docs/git-clean

 239
Author: Heath Dutton,
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-14 21:41:10

Dla wszystkich unstaged plików użyj:

git checkout -- .

. na końcu jest ważne.

Możesz zastąpić . nazwą podkatalogu, aby wyczyścić tylko określony podkatalog twojego projektu. Problem został rozwiązany w szczególności tutaj .

 167
Author: jfountain,
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:33:24

Spójrz na git clean dowództwo.

Git-clean-Remove untracked files from the working tree

Czyści drzewo robocze, rekurencyjnie usuwając pliki, które nie są pod kontrolą wersji, zaczynając od bieżącego katalogu.

Normalnie usuwane są tylko pliki nieznane gitowi, ale jeśli podano opcję-x, to ignorowane pliki są również usuwane. Może to być na przykład przydatne do usunięcia wszystkich produktów kompilacji.

 57
Author: Greg Hewgill,
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
2009-07-07 04:09:30

Następujące dzieła:

git add -A .
git stash
git stash drop stash@{0}

Zwróć uwagę, że spowoduje to odrzucenie zarówno Twoich nieakcentowanych, jak i ustawionych zmian lokalnych. Przed uruchomieniem tych poleceń powinieneś zatwierdzić wszystko, co chcesz zachować.

Typowy przypadek użycia: przeniosłeś wiele plików lub katalogów wokół, a następnie chcesz wrócić do pierwotnego stanu.

Napisy: https://stackoverflow.com/a/52719/246724

 36
Author: donquixote,
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:36

Możesz to zrobić w dwóch krokach:

  1. Przywróć zmodyfikowane pliki: git checkout -f
  2. Usuń Nie śledzone Pliki: git clean -fd
 28
Author: Gerard de Visser,
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-12-14 15:14:07

Myślałem, że to (Ostrzeżenie: pobędzie wymazać wszystko )

$ git reset --hard HEAD
$ git clean -fd

reset aby cofnąć zmiany. clean, aby usunąć wszelkie Nie śledzone F Ile i d irectories.

 26
Author: skube,
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-07-26 11:11:54
git reset --hard origin/{branchName}

Usunie wszystkie Nie śledzone pliki.

 7
Author: santosh kumar,
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-17 17:28:13

Alternatywnym rozwiązaniem jest zatwierdzenie zmian, a następnie pozbycie się tych zmian. Na początku nie przynosi to natychmiastowych korzyści, ale otwiera możliwość zatwierdzania w kawałkach i tworzenia znacznika git dla kopii zapasowej.

Możesz to zrobić na bieżącej gałęzi, 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^^
Albo możesz to zrobić na odłączonej głowie. (zakładając, że zaczynasz od branchname branch):
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ę commit w kawałkach, a następnie nazywam niektóre lub wszystkie commity "Odrzuć: ...". Następnie użyj interaktywnej rebase, aby usunąć złe commity 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 gadatliwe, ale pozwala dokładnie sprawdzić, które zmiany chcesz odrzucić.

The git lol oraz git lola skróty były bardzo pomocne w tym przepływie pracy.

 2
Author: donquixote,
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-08-01 20:12:28

Dla konkretnego folderu użyłem:

git checkout -- FolderToClean/*
 2
Author: Glauco Neves,
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-08-26 21:19:36

git clean -i najpierw pokaże elementy do usunięcia i kontynuować po potwierdzeniu. Uważam to za przydatne, gdy mamy do czynienia z ważnymi plikami, które nie powinny być przypadkowo usunięte.

Zobacz git help clean Aby uzyskać więcej informacji, w tym kilka innych przydatnych opcji.

 2
Author: Taiga,
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-05 10:18:07

Jeśli chcesz odrzucić wszystkie zmiany, możesz użyć jednej z ważnych opcji w aliasie w .gitconfig. Na przykład:

[alias]
    discard = "!f() { git add . && git stash && git stash drop stash@{0}; }; f"

Użycie: git discard

 2
Author: Agorreca,
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-25 20:04:44