git ongedaan maken van alle niet-vastgelegde of niet-opgeslagen wijzigingen

Ik probeer alle wijzigingen sinds mijn laatste commit ongedaan te maken. Ik heb git reset --harden git reset --hard HEADgeprobeerd na het bekijken van dit bericht. Ik antwoord met hoofd is nu op 18c3773… maar als ik naar mijn lokale bron kijk, zijn alle bestanden er nog steeds. Wat mis ik?


Antwoord 1, autoriteit 100%

  • Hiermee worden alle bestanden die je mogelijk hebt gestaged met git add, ongedaan gemaakt:

    git reset
    
  • Hiermee worden alle lokale niet-vastgelegde wijzigingen ongedaan gemaakt (moeten worden uitgevoerd in de repo-root):

    git checkout .
    

    U kunt ook niet-vastgelegde wijzigingen alleen terugzetten naar een bepaald bestand of een bepaalde map:

    git checkout [some_dir|file.txt]
    

    Nog een andere manier om alle niet-vastgelegde wijzigingen ongedaan te maken (langer om te typen, maar werkt vanuit elke submap):

    git reset --hard HEAD
    
  • Hiermee worden alle lokale niet-getrackte bestanden verwijderd, dus alleendoor git getraceerde bestanden blijven:

    git clean -fdx
    

    WAARSCHUWING:-xverwijdert ook alle genegeerde bestanden, inclusief de bestanden die zijn gespecificeerd door .gitignore! Misschien wilt u -ngebruiken als voorbeeld van bestanden die moeten worden verwijderd.


Om het samen te vatten: het uitvoeren van onderstaande commando’s is in principe gelijk aan verse git clonevan de originele bron (maar het downloadt niets opnieuw, dus is veel sneller):

git reset
git checkout .
git clean -fdx

Typisch gebruik hiervoor is in build-scripts, wanneer u ervoor moet zorgen dat uw boom absoluut schoon is – geen wijzigingen of lokaal gemaakte objectbestanden of bouwartefacten heeft, en u wilt dat het heel snel werkt en niet elke keer de hele repository opnieuw klonen.


Antwoord 2, autoriteit 9%

Als u alle niet-vastgelegde wijzigingen wilt “ongedaan maken” uitvoeren, voert u gewoon uit:

git stash
git stash drop

Als je niet-getrackte bestanden hebt (controleer door git statusuit te voeren), deze kunnen worden verwijderd door het volgende uit te voeren:

git clean -fdx

git stashmaakt een nieuwe stash aan die [email protected]{0}wordt. Als je het eerst wilt controleren, kun je git stash listuitvoeren om een lijst van je stashes te zien. Het ziet er ongeveer zo uit:

[email protected]{0}: WIP on rails-4: 66c8407 remove forem residuals
[email protected]{1}: WIP on master: 2b8f269 Map qualifications
[email protected]{2}: WIP on master: 27a7e54 Use non-dynamic finders
[email protected]{3}: WIP on blogit: c9bd270 some changes

Elke stash is vernoemd naar het vorige commit-bericht.


Antwoord 3

Wat ik doe is

git add . (adding everything)
git stash 
git stash drop

Eén voering: git add . && git stash && git stash drop

Een kortere versie zoals aangegeven door M. Justin

git stash -u && git stash drop


Antwoord 4

er is ook git stash– die uw lokale wijzigingen “stasht” en op een later tijdstip opnieuw kan worden toegepast of kan worden verwijderd als dit niet langer nodig is

meer info over stashing


Antwoord 5

Ik gebruik Source Tree …. Je kunt alle niet-gecommitteerde wijzigingen terugkeren met 2 eenvoudige stappen:

1) HOE NODIG NODIG DE STATUS VAN DE WERKSPAAAL BESTAAN


2) Selecteer alle UnSpagina-bestanden (opdracht + A), klik met de rechtermuisknop en selecteer Verwijderen

Het is zo eenvoudig: D


Antwoord 6

dit antwoord toevoegen omdat de vorige antwoorden permanent verwijderen uw wijzigingen

de veilige manier

git stash -u

Uitleg: Stash Local Changes inclusief Ontracked wijzigingen (-uVlag). De opdracht slaat uw lokale modificaties op weg en keert de werkdirectory terug die overeenkomt met het hoofd.

Wilt u de wijzigingen later herstellen?

git stash pop

Uitleg: de opdracht zal de wijzigingen in de bovenkant van de huidige werkboomstatus opnieuw toepassen.

Wilt u de wijzigingen permanent verwijderen?

git stash drop

Uitleg: de opdracht verwijdert de versterkte invoer

permanent

link naar git stash-documentatie


Antwoord 7

Voor degenen die hier hebben bereikt zoeken of ze git clean -f -dongedaan konden maken, waarmee een bestand is gemaakt in eclips is verwijderd,

U kunt hetzelfde doen vanuit de gebruikersinterface met behulp van “herstellen vanuit lokale geschiedenis” voor ref:Herstellen van lokale geschiedenis


Antwoord 8

Staten die overgaan van een vastlegging naar een nieuwe vastlegging

0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed

Actie voor staatsovergang

0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"

Controleer verschil

0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD

Terug naar laatste commit

2->1: git reset
1->0: git checkout .     #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx     #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD

Equivalent van git clone, zonder iets opnieuw te downloaden

git reset && git checkout . && git clean -fdx

Antwoord 9

Een andere optie om wijzigingen ongedaan te maken die niet klaar waren voor vastlegging, is het volgende:

git restore <file>

Om wijzigingen in de werkmap te negeren.


Antwoord 10

Het volgende definieert een herbruikbare Git-opdrachtaliasom lokale wijzigingen te verwijderen, die vervolgens op elk moment in de toekomst kunnen worden gebruikt om niet-vastgelegde wijzigingen te verwijderen:

git config --global alias.remove-changes '!git stash push --include-untracked && git stash drop'

Het gebruik van de alias is eenvoudig:

git remove-changes

De alias pusht alle wijzigingen naar de stash (inclusief niet-vastgelegde) met behulp van git stash push --include-untracked, en laat vervolgens het nieuw gemaakte stash-item vallen met behulp van git stash drop.


Antwoord 11

Gebruik dit om ongewenste wijzigingen na de laatste vastlegging te verwijderen.

git reset --hard HEAD

Antwoord 12

git restore [filename_path]

Ik moet bijvoorbeeld mijn laatste wijzigingen in het bestand index.htmlnegeren:

git restore /usr/myPC/folder/index.html

Antwoord 13

als u alle niet-vastgelegde wijzigingen of lokale wijzigingen “ongedaan wilt maken”, voert u het volgende uit:

git add. 
git stash 
git stash drop
git clean -fdx

Antwoord 14

# Navigate to project root, `.` works too.
git restore *

git statusliet zien dat ik een aantal bestanden had die veranderd waren, maar ik wilde die kwijt en een nieuwe branch beginnen. Tot vandaag had ik de git reset-aanpak gebruikt, wat ik leuk vind om terug te springen naar andere specifieke commits.

https://www.git-tower.com/ Leer / Git / Commands / Git-Restore /

Other episodes