Sla de dag op met Git en verwijder uit de commitgeschiedenis

Heb je fouten ondervonden of problemen gehad met Git-commits tijdens het werken met Git? Misschien is er per ongeluk een geheime of gevoelige gegevens opgeslagen. Gelukkig kun je je bestanden verwerken met Git en ze uit de commit halen en de geschiedenis corrigeren.

Als je meerdere commits hebt gemaakt of een repository hebt gekloond met al bestaande commitgeschiedenis, wil je meestal terugkijken en zien welke commits zijn gemaakt. In deze tutorial leer je hoe je een invoer uit je Git-geschiedenis kunt verwijderen.

Lees verder en red de dag met Git!

Vereisten

Deze tutorial bestaat uit stapsgewijze instructies. Zorg ervoor dat je het volgende hebt:

  • A local machine to test the Git commands – This tutorial uses Windows 10, but later versions will also work.
  • Git Bash – Deze tutorial maakt gebruik van Git Bash 2.36.

Een bestand verwijderen uit Git Commit

Als je in een team aan Git werkt, maak je dagelijks honderden commits. Hierdoor is de kans groot dat je een bepaalde commit moet terugdraaien, bijvoorbeeld vanwege een onjuist bestand of meerdere bestanden. Deze behoefte wordt meestal veroorzaakt door een wijziging in code of configuratie en wordt een probleem.

Om dit probleem op te lossen, moet je het bestand of meerdere bestanden uit de Git-commit verwijderen door Git-commando’s uit te voeren. Je zult een van de populaire tools gebruiken om een enkel bestand uit de Git-commit te verwijderen, namelijk de Git Bash-tool.

1. Open de Git Bash-tool op je Windows-machine.

2. Voer vervolgens onderstaand commando uit om een repository-map aan te maken en naar die map te schakelen. Deze commando’s geven geen uitvoer op de terminal. Zorg er echter voor dat je ~/Desktop/Repository/repo1 vervangt door je gewenste map en naam.

# Maakt de Repository-map en de submap repo1 aan
mkdir -p ~/Desktop/Repository/repo1
# Wijzigt de werkmap naar repo1
cd ~/Desktop/Repository/repo1

3. Voer de volgende commando’s uit om je repository te initialiseren en twee tekstbestanden met de naam test1.txt en test2.txt aan te maken.

# Initialiseert de lokale repository (maakt een verborgen .git-map aan)
git init
# Maakt twee tekstbestanden aan
touch test_file1.txt test_file2.txt
Initializes the local repository

4. Voer nu het onderstaande commando uit om de status van de Git-commit te controleren.

git status

Nadat je het commando hebt uitgevoerd, zul je merken dat de commits niet bijgehouden worden en nog niet zijn uitgevoerd, zoals hieronder weergegeven.

Checking the status of Git commits on the Git terminal

5. Voer het git add-commando hieronder uit om de twee tekstbestanden die je hebt aangemaakt in stap drie (test_file1.txt en test_file2.txt) toe te voegen aan je lokale repository.

Dit commando geeft geen uitvoer maar voegt de bestanden toe zonder ze naar de externe repository te pushen.

git add .

6. Voer vervolgens het git commit-commando hieronder uit zodat Git de voortgang en wijzigingen die je hebt aangebracht in de lokale repository bijhoudt.

git commit -m "Adding two new files test_file1.txt and text_file2.txt"
Committing Changes to Repository

7. Na het committen, voer de onderstaande opdracht uit om een specifiek bestand (test_file2.txt) uit de Git-commit te verwijderen.

git rm --cached test_file2.txt
Removing a Specific File from the Git Commit

8. Voer tot slot de git status-opdracht hieronder opnieuw uit om de status van het repository te verifiëren.

git status

Zoals je hieronder kunt zien, is het bestand verwijderd uit het staging-gebied (de Git-commit) en wordt het bestand (test_file2.txt) weergegeven onder Untracked files.

Verifying the Removed Git Commit (test_file2.txt)

Alle recentelijk geüploade bestanden verwijderen

Je hebt zojuist geleerd hoe je een specifiek bestand uit de Git-commit kunt verwijderen. Maar meestal moet je meerdere bestanden verwijderen, en Git is hiervoor geschikt met de git reset-opdracht. De git reset-opdracht is een complex, maar tegelijkertijd veelzijdig hulpmiddel om wijzigingen in het repository ongedaan te maken.

Om te zien hoe de git reset werkt, commit je een paar bestanden en reset je vervolgens de wijzigingen om recentelijk geüploade bestanden uit de Git-commit te verwijderen:

1. Maak twee nieuwe tekstbestanden met de naam test_file3.txt en test_file4.txt in de map ~/Desktop/Repository/repo1.

touch test_file3.txt test_file4.txt

2. Voer vervolgens de git add-opdracht hieronder uit, die geen output geeft maar de nieuwe tekstbestanden toevoegt aan je lokale repository (~/Desktop/Repository/repo1).

git add .

3. Voer de git commit-opdracht hieronder uit om de bestanden te committen, zodat Git de voortgang en wijzigingen die je in het repository hebt aangebracht, bijhoudt.

git commit -m "Adding two more files"
Committing Changes to the Repository

4. Voer nu het onderstaande commando uit om de status van uw lokale repository te controleren.

git status

Zoals u hieronder kunt zien, toont de uitvoer het bericht “nothing to commit”, wat aangeeft dat alles in orde is in de repository.

Checking the Status of Git Commits

5. Voer vervolgens het git reset-commando hieronder uit om de recent gemaakte commits in stap drie terug te draaien. Dit commando geeft geen uitvoer, maar verwijdert de bestanden test_file3.txt en test_file4.txt.

git reset --soft HEAD~1

U kunt ook git reset –soft HEAD^ gebruiken om alle bestanden te verwijderen die tot nu toe zijn geüpload.

6. Voer vervolgens het git status-commando hieronder opnieuw uit om de status van de repository te controleren.

git status

Hieronder toont de uitvoer bestanden test_file3.txt en test_file4.txt die moeten worden geüpload. Deze uitvoer geeft aan welke bestanden moeten worden verwijderd uit de Git-commit.

Verifying the Recent Commits were Removed

Specifieke commits verwijderen uit Git-geschiedenis

Het verwijderen van alle geüploade bestanden werkt goed als u wilt beginnen met een schone lei. Maar wat als u slechts één bepaalde commit wilt verwijderen? Het git revert-commando doet het werk zolang u de ID van de commit kent.

In de laatste stap van de sectie “Alle recentelijk geüploade bestanden verwijderen” merkte u op dat de commits niet waren geüpload maar gewijzigd. U zult nu de wijzigingen uploaden om het git revert-commando in actie te zien.

Voer het git commit-commando hieronder uit om de recente wijzigingen in uw lokale repository te uploaden.

git commit -m "Hello, I am committing those two files again"

Na het uitvoeren van het commando zul je merken dat beide tekstbestanden opnieuw zijn toegevoegd en het commit-ID is 0315b85, zoals hieronder getoond.

Committing the Changes in the Local Repository

Voer nu het git revert-commando hieronder uit om de commit ongedaan te maken die je in de vorige stap hebt gedaan. Zorg ervoor dat je 0315b85 vervangt door het ID van je commit.

git revert 0315b85

Hieronder zie je dat twee bestanden die je onlangs hebt toegevoegd, zijn verwijderd.

Reverting the Changes in the Local Repository

Een Map Verwijderen uit de Git Commit-geschiedenis

Tegenwoordig weet je al hoe je een toegevoegd bestand kunt verwijderen, maar hoe zit het met een map? Een map verwijderen uit een Git-commit is vergelijkbaar met het verwijderen van bestanden.

1. Voer de onderstaande commando’s uit, die geen uitvoer geven maar wel het volgende uitvoeren:

  • Maak een map met de naam myfolder aan in je lokale repository (~/Desktop/Repository/repo1).
  • Maak een bestand met de naam l.txt aan in de map ~/Desktop/Repository/repo1/myfolder.
mkdir myfolder && touch myfolder/l.txt

2. Voer vervolgens de git-commando’s hieronder uit om de nieuwe map (~/Desktop/Repository/repo1/myfolder) aan je lokale repository toe te voegen.

git add .
git commit -m "Adding folder"
Adding the new folder (folder) to the Local Repository

3. Voer het volgende git rm-commando uit om de map (myfolder) te verwijderen die je in stap twee hebt toegevoegd.

git rm -r myfolder/
Removing the New Folder (folder) in Git Commit

4. Voer tot slot het git status-commando uit om de status van de repository te verifiëren en te zien of de map is verwijderd.

git status

Hieronder zie je dat de hele map (myfolder) succesvol is verwijderd, samen met het bestand l.txt erin.

Verifying the Folder (myfolder) Has Been Removed Successfully

Conclusie

In deze tutorial heb je geleerd om te werken met Git-commits, zoals het verwijderen van een specifieke commit, een bestand of meerdere bestanden. Je hebt ook besproken hoe je een hele map binnen het lokale repository kunt verwijderen en de wijzigingen kunt committen.

Op dit punt kun je met vertrouwen wijzigingen committen op je repository en commits verwijderen die je onnodig vindt zonder problemen te veroorzaken.

Met wat je hebt geleerd in deze tutorial, welke methode denk je dat uitstekend zou zijn om met commits te werken voor jouw team?

Source:
https://adamtheautomator.com/git-and-remove-from-commit/