Pracuję na gałęzi, powiedzmy „eksperymentalnej” gałęzi, którą rozgałęziam z mojej gałęzi głównej. Następnie generuję model użytkownika w gałęzi eksperymentalnej, ale jeszcze nie dodaję ich do indeksu.
Co mam zrobić, jeśli chcę odrzucić wszystkie zmiany plików ostatnio dodanych w mojej gałęzi eksperymentalnej? Nieśledzone pliki są wymienione poniżej:
$ git status
On branch new_chick
Untracked files:
(use "git add <file>..." to include in what will be committed)
.project
app/models/user.rb
db/migrate/
test/fixtures/users.yml
test/unit/user_test.rb
Próbowałem uruchomić "git reset --hard" w nadziei na cofnięcie wszystkich tych zmian, ale wszystkie powyższe pliki nadal się wyświetlają.
Czy ktoś mógłby rzucić na mnie trochę światła?
Odpowiedzi:
Aby usunąć nieśledzone pliki / katalogi, wykonaj:
-f - siła
-d - również katalogi
-x - usuń również ignorowane pliki (nie używaj tego, jeśli nie chcesz usuwać ignorowanych plików)
Używaj ostrożnie!
Te polecenia mogą trwale usunąć dowolne pliki, o których na początku nie pomyślałeś. Sprawdź dokładnie i przeczytaj wszystkie komentarze pod tą odpowiedzią i sekcją --help, itp., Aby poznać wszystkie szczegóły, aby dostosować polecenia i na pewno uzyskać oczekiwany rezultat.
źródło
-x
OSTROŻNIE, ponieważ spowoduje to trwałe usunięcie plików. Lub użyj z,-n
jak wspomniano przez @Druska-x
nadal .project i inne pliki konfiguracyjne zostały usunięte. Musiałem ponownie ściągnąć repozytorium z ostatniego zatwierdzenia do nowego katalogu.Interaktywne podejście użytkownika:
-i dla interaktywnego
-f dla wymuszenia
-d dla katalogu
-x dla ignorowanych plików (dodaj, jeśli to konieczne)
Uwaga: Dodaj -n lub --dry-run, aby sprawdzić, co zrobi.
źródło
To nie są śledzone pliki. Oznacza to, że git ich nie śledzi. Wymienia je tylko dlatego, że nie ma ich w pliku ignorowania git. Ponieważ nie są śledzone przez gita,
git reset
nie dotykaj ich.Jeśli chcesz zniszczyć wszystkie nieśledzone pliki, najprostszym sposobem jest
git clean -f
(użyjgit clean -n
zamiast tego, jeśli chcesz zobaczyć, co by to zniszczyło, nie usuwając niczego). W przeciwnym razie możesz po prostu ręcznie usunąć pliki, których nie chcesz.źródło
Aby usunąć nieśledzone pliki:
git clean -f
Aby usunąć również nieśledzone katalogi, użyj:
git clean -f -d
Aby zapobiec zatrzymaniu krążenia, użyj
git clean -n -f -d
źródło
Możesz także powrócić do poprzedniego stanu lokalnego repozytorium w inny sposób:
git add
.git reset --hard
.źródło
Polecenie na ratunek brzmi
git clean
.źródło
Cóż, miałem podobny problem. Zrobiłem najnowsze, ale nastąpiły pewne zmiany w lokalnym, przez które scalanie nie działo się w określonym pliku. Plik był nieśledzony i nie chciałem ich, więc zrobiłem -
$ git checkout ścieżka / nazwa pliku
filepath - lokalizacja, z której wykonałem git bash. wtedy kiedy wziąłem najnowsze zmiany były dostępne
źródło
Chociaż
git clean
działa dobrze, nadal uważam, że przydatne jest używanie własnego skryptu do czyszczenia repozytorium git, ma to jednak pewne zalety.Wyświetla listę plików do wyczyszczenia, a następnie interaktywnie monituje o wyczyszczenie lub nie. Prawie zawsze tego chcę, ponieważ interaktywne monitowanie o plik staje się żmudne.
Umożliwia także ręczne filtrowanie listy, co jest przydatne, gdy istnieją typy plików, których nie chcesz czyścić (i masz powód, aby nie zatwierdzać).
git_clean.sh
źródło