11450 Stimmen

Wie kann ich "git add" vor der Übertragung rückgängig machen?

Ich habe versehentlich Dateien mit dem Befehl zu Git hinzugefügt:

git add myfile.txt

Ich habe noch nicht ausgeführt git commit . Gibt es eine Möglichkeit, dies rückgängig zu machen, so dass diese Dateien nicht in die Übertragung aufgenommen werden?

57 Stimmen

Beginnend mit Git v1.8.4 werden alle folgenden Antworten, die HEAD o head können nun @ anstelle von HEAD stattdessen. Siehe diese Antwort (letzter Abschnitt) um zu erfahren, warum Sie das tun können.

5 Stimmen

Ich habe eine kleine Übersicht erstellt, die alle Möglichkeiten zum Aufheben einer Datei zeigt: stackoverflow.com/questions/6919121/

8 Stimmen

Wenn Sie Eclipse verwenden, ist es so einfach wie das Entfernen der Markierung der Dateien im Dialogfeld "Übertragen".

18voto

Sam Macharia Punkte 485

Das erste Mal, als ich dieses Problem hatte, fand ich diese Stelle und aus der ersten Antwort habe ich gelernt, dass ich einfach tun sollte git reset <filename> . Es hat gut funktioniert.

Schließlich hatte ich zufällig ein paar Unterordner in meinem Git-Hauptordner. Ich fand es einfach, einfach zu tun git add . um alle Dateien in den Unterordnern hinzuzufügen und dann git reset die wenigen Dateien, die ich nicht hinzufügen wollte.

Heutzutage habe ich viele Dateien und Unterordner. Es ist mühsam git reset einer nach dem anderen, aber es ist immer noch einfacher, einfach git add . und dann die wenigen schweren/unerwünschten, aber nützlichen Dateien und Ordner zurücksetzen.

Ich habe die folgende Methode gefunden (die nicht aufgezeichnet wird ici o ici ) relativ einfach. Ich hoffe, es wird hilfreich sein:

Nehmen wir an, Sie haben die folgende Situation:

Folder/SubFolder1/file1.txt
Folder/SubFolder2/fig1.png
Folder/SubFolderX/fig.svg
Folder/SubFolder3/<manyfiles>
Folder/SubFolder4/<file1.py, file2.py, ..., file60.py, ...>

Sie möchten alle Ordner und Dateien hinzufügen, aber nicht fig1.png und nicht SubFolderX und nicht file60.py und die Liste wird immer länger ...

Erstellen Sie zunächst eine bash shell script und geben Sie ihm einen Namen. Sagen Sie, git_add.sh :

Fügen Sie dann die Pfade zu allen Ordnern und Dateien hinzu, die Sie git reset vorausgegangen git reset -- . Sie können die Pfade einfach in das Skript kopieren und einfügen git_add.sh wenn Ihre Liste der Dateien wächst. Die git_add.sh Skript sollte wie folgt aussehen:

#!/bin/bash

git add .
git reset -- Folder/SubFolder2/fig1.png
git reset -- Folder/SubFolderX
git reset -- Folder/SubFolder4/file60.py

#!/bin/bash ist wichtig. Dann tun source git_add.sh um es zu betreiben. Danach können Sie git commit -m "some comment" und dann git push -u origin master wenn Sie Bitbucket/Github bereits eingerichtet haben.

Haftungsausschluss: Ich habe dies nur unter Linux getestet.


Wenn Sie viele Dateien und Ordner haben, die Sie immer in Ihrem lokalen Git-Repository aufbewahren, aber nicht möchten, dass Git die Änderungen nachverfolgt, wenn Sie das git add . zum Beispiel Video- und Datendateien, müssen Sie lernen, wie man .gitignore . Vielleicht von ici .

1 Stimmen

Wenn Sie source die Datei, sie muss nicht ausführbar sein.

0 Stimmen

Haben Sie die Verwendung eines .gitignore Datei, um zu verhindern, dass Dateien und Verzeichnisse, die nicht hinzugefügt werden sollen, hinzugefügt werden?

18voto

Anirudh Sood Punkte 1428

Rückgängig machen git add verwenden:

git reset filename

0 Stimmen

Inwiefern ist diese Antwort besser als die erste, die 8 Jahre zuvor gegeben wurde? @PeterMortensen, Sie haben diesen Beitrag bearbeitet - warum nicht als Duplikat zur Löschung vormerken?

17voto

Jonathan Punkte 279

Es gibt auch einen interaktiven Modus:

git add -i

Wählen Sie Option 3, um das Hinzufügen von Dateien aufzuheben. In meinem Fall möchte ich oft mehr als eine Datei hinzufügen, und im interaktiven Modus können Sie Zahlen wie diese verwenden, um Dateien hinzuzufügen. So werden alle bis auf 4 übernommen: 1, 2, 3 und 5

Um eine Reihenfolge zu wählen, geben Sie einfach 1-5 ein, um alle Zahlen von 1 bis 5 zu nehmen.

Git-Staging-Dateien

0 Stimmen

"Ich bin überrascht, dass niemand den interaktiven Modus erwähnt hat" - haben sie: stackoverflow.com/a/10209776/1709587

16voto

Joseph Mathew Punkte 1179
git reset filename.txt  

Entfernt eine Datei mit dem Namen filename.txt aus dem aktuellen Index, dem Bereich "about to be committed", ohne etwas anderes zu ändern.

0 Stimmen

Git reset [Dateiname] ex : git reset src/main/java/com/dao/ImportCsvDataDaoImpl.java

16voto

wallerjake Punkte 3969

Mit diesem Befehl werden Ihre Änderungen rückgängig gemacht:

git reset HEAD filename.txt

Sie können auch Folgendes verwenden

git add -p 

um Teile von Dateien hinzuzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X