Ta bort filer från Git commit

Jag använder Git och jag har lagt in några filer med hjälp av

git commit -a

Senare upptäckte jag att en fil av misstag hade lagts till i överföringen.

Hur kan jag ta bort en fil från den senaste commit?

ATTENTION! Om du bara vill ta bort en fil från din tidigare commit och behålla den på disken, läs juzzlin's svar ovan.

Om detta är din sista commit och du vill helt radera filen från ditt lokala och fjärrförvaret, kan du göra det:

  1. ta bort filen git rm
  2. göra en commit med amend-flaggan: git commit --amend.

Flaggan amend säger åt git att göra en ny commit, men "sammanfoga" (inte i betydelsen att sammanfoga två grenar) denna commit med den senaste.

Som det står i kommentarerna är det att använda git rm här som att använda själva kommandot rm!

Kommentarer (5)

Om du inte har lagt över ändringarna på servern kan du använda

git reset --soft HEAD~1

Det kommer att återställa alla ändringar och återgå till en commit tillbaka.

Om du har pushat dina ändringar följer du de steg som besvarats av @CharlesB

Kommentarer (8)

Om du tar bort filen med rm raderas den!

Du lägger alltid till en commit i git snarare än tar bort den, så i det här fallet återställer du filen till det tillstånd den var i innan den första commit (detta kan vara en delete 'rm' åtgärd om filen är ny) och sedan återkommitterar du filen så att den försvinner.

För att återställa filen till ett tidigare tillstånd:

    git checkout  <path_to_file>

eller för att återställa den till tillståndet i den fjärrstyrda HEAD:

    git checkout origin/master <path_to_file>

ändra sedan commit och du bör se att filen har försvunnit från listan (och inte raderats från din disk!)

Kommentarer (0)