2009-08-08 8 views
12

Ich habe git clone git: //foo.git cd foo ... Bearbeiten von Dateien .. Wie kann ich Klon git: //foo.git again?

ich jetzt frisch beginnen soll. Ich kümmere mich nicht um irgendwelche Änderungen, die ich bereits gemacht habe, , aber ich möchte nicht den ganzen riesigen foo.git wieder klonen, nur alle meine Änderungen verlieren. Wie kann ich klonen git: //foo.git ein zweites Mal, ohne fatal: destination path 'foo' already exists and is not an empty directory. was ist der richtige Befehl?

Antwort

2

Um alle Änderungen rückgängig machen, verwenden:

git checkout . 

Untracked Dateien (Dateien, die ursprünglich nicht im Baum vorhanden ist, die Sie erstellt und kann nicht bearbeitet) wird jedoch nicht entfernt werden. Verwenden Sie zum Auffinden der nicht aufgezeichneten Dateien:

Dann löschen Sie sie manuell.

Übrigens, wenn Sie eine Kopie des Repos erstellen möchten, müssen Sie das ursprüngliche Repo nicht klonen, Sie können einfach das bereits auf Ihrer Festplatte vorhandene klonen. Gehen Sie irgendwo außerhalb foo, und zu tun:

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

Nizza ~! Ich wusste nicht über 'sauber'! –

+5

Hinweis: Git Kasse. offensichtlich wird nicht funktionieren, wenn Sie nicht in der Spitze Ihres Repo sind. 'git reset --hard' wird universell funktionieren. – Cascabel

2

Sie verwenden können "git Kasse." oder "git checkout HEAD -.", oder sogar "git reset --hard HEAD", um Ihren Arbeitsbereich in den bekannten Zustand zurückzusetzen (im ersten Fall im Index aufgezeichnet, im zweiten und dritten Fall im HEAD commit) .

Um nicht verfolgte Dateien zu löschen, die Sie nicht behalten möchten, können Sie "git clean" verwenden (siehe documentation for details).

Um neue Änderungen von Remote-Repository erhalten Sie von geklonten, verwendet (oder gleichwertig "git remote update", nach einigen Setup) oder "git pull" "Git holen" (und fusionieren Änderungen zu holen).

-2

können Sie auch immer

rm -rf * 
git checkout master 

Weniger

+0

Das funktioniert nicht, wenn der Master bereits lokale Commits enthält, da sie immer noch da sind. –

0

Wenn Sie wirklich verschrauben erinnern Befehle :) aufbrauchen:

git clean -df 
git reset --hard HEAD