2009-08-08 9 views
12

zrobiłem git clone git: //foo.git cd foo ... edytować pliki .. jak mogę git klonować: //foo.git PONOWNIE?

teraz chcę rozpocząć świeże. Nie interesują mnie żadne zmiany, które już zrobiłem, ale nie chcę znów klonować całego gigantycznego foo.git, po prostu tracę wszystkie moje zmiany. jak mogę git clone git: //foo.git po raz drugi, bez uzyskania fatal: destination path 'foo' already exists and is not an empty directory. jakie jest właściwe polecenie?

Odpowiedz

2

Aby przywrócić wszystkie zmiany, należy:

git checkout . 

Nieśledzone pliki (pliki, które pierwotnie nie istnieją w drzewie, te, które tworzone i edytowane nie) nie zostaną usunięte, choć. Aby znaleźć niepobrane pliki, użyj:

git status 

Następnie usuń je ręcznie.

Nawiasem mówiąc, jeśli chcesz zrobić kopię repo, nie musisz klonować oryginalnego repo, możesz po prostu sklonować ten, który już masz na dysku twardym. Idź gdzieś poza foo i zrobić:

git clone /path/to/foo 
9
git checkout . # revert your changes 
git clean -xdf # delete untracked and ignored files 
+1

Nicea ~! Nie wiedziałem o "czystej"! –

+5

Uwaga: git checkout. oczywiście nie będzie działać, jeśli nie jesteś na szczycie repozytorium. 'git reset --hard' będzie działać uniwersalnie. – Cascabel

2

Można użyć "git checkout". lub "git checkout HEAD -.", lub nawet "git reset --hard HEAD", aby zresetować obszar roboczy do znanego stanu (do stanu zapisanego w indeksie w pierwszym przypadku, do stanu zarejestrowanego w HEAD commit w drugim i trzecim przypadku) .

Aby usunąć nieśledzone pliki, których nie chcesz, możesz użyć "git clean" (patrz documentation for details).

Aby uzyskać nowe zmiany od zdalnego repozytorium sklonowanego z użyć "git fetch" (lub równoważny "git remote update", po jakimś Setup), czy "git pull" (do pobrania i scalić zmiany).

-2

Można też zawsze używać poleceń

rm -rf * 
git checkout master 

Mniej pamiętać :)

+0

To nie działa, jeśli master już zawiera lokalne zatwierdzenia, ponieważ nadal będą tam dostępne. –

0

Jeśli naprawdę przykręcić:

git clean -df 
git reset --hard HEAD 
Powiązane problemy