Jag lade av misstag till filer till Git med kommandot:
git add myfile.txt
Jag har ännu inte kört git commit
. Finns det ett sätt att ångra detta, så att dessa filer inte kommer att inkluderas i commit?
Du kan ångra git add
innan du gör en överföring med
git reset <file>
vilket tar bort det från det aktuella indexet (listan "about to be commit") utan att ändra något annat.
Du kan använda
git reset
utan något filnamn för att återställa alla ändringar. Detta kan vara praktiskt när det finns för många filer som inte kan listas en efter en på rimlig tid.
I gamla versioner av Git är ovanstående kommandon likvärdiga med git reset HEAD <file>
respektive git reset HEAD
, och kommer att misslyckas om HEAD
är odefinierad (för att du ännu inte har gjort några commits i ditt arkiv) eller tvetydig (för att du har skapat en gren som heter HEAD
, vilket är en dum sak som du inte borde göra). Detta ändrades dock i Git 1.8.2, så i moderna versioner av Git kan du använda kommandona ovan även innan du har gjort din första commit:
"git reset" (utan alternativ eller parametrar) brukade ge fel när du inte har några commits i din historik, men det ger dig nu ett tomt index (för att matcha en icke-existerande commit som du inte ens är på).
Om du skriver:
git status
Git kommer att berätta vad som är staged etc., inklusive instruktioner om hur man tar bort staged:
use "git reset HEAD <file>..." to unstage
Jag tycker att Git gör ett ganska bra jobb med att uppmuntra mig att göra rätt sak i sådana här situationer.
Note: Nya Git-versioner (1.8.4.x) har ändrat detta meddelande:
(use "git rm --cached <file>..." to unstage)