Verwijder bestanden volledig uit de git-repository samen met de geschiedenis

Ik heb een aantal updates geleden een lettertypebestand geüpload waarvan ik niet de rechten heb om het naar git hub te distribueren.

Ik heb een relatief inactieve repository en ik kan al mijn leden indien nodig op de hoogte stellen. Ik heb verschillende oplossingen geprobeerd. Ik moet een bestand in mijn map met de naam Resources\Video\%font%.ttfverwijderen, waarbij %font%de naam is van de gewone, cursieve en vetgedrukte versies van de lettertype. Welke commando’s gebruik ik?


Antwoord 1, autoriteit 100%

In dat geval zou je de opdracht Git Filter Branchkunnen gebruiken met --tree-filteroptie.

syntaxis is git filter-branch --tree-filter <command> ...

git filter-branch --tree-filter 'rm -f Resources\Video\%font%.ttf' -- --all

Bijgewerkt bewerken

Merk op dat git filter-branch--index-filterveel sneller is dan --tree-filter

git filter-branch --index-filter 'rm -f Resources\Video\%font%.ttf' -- --all

Moet in Windows /gebruiken in plaats van \.


Uitleg over het commando:

< command >Specificeer een willekeurig shell-commando.

--tree-filter:Git checkt elke commit uit in de werkdirectory, voert je commando uit en voert opnieuw een commit.

--index-filter:Git werkt de git-geschiedenis bij en niet de werkmap.

--all:Filter alle commits in alle branches.

Opmerking:controleer het pad voor uw bestand, want ik weet niet zeker wat het bestandspad is

Ik hoop dat dit je helpt.


Antwoord 2, autoriteit 16%

git filter-branch --index-filter 'git rm --cached --ignore-unmatch Resources\Video\%font%.ttf' HEADkan veel (tot 100x) sneller zijn dan --tree-filteromdat het alleen de git-geschiedenis bijwerkt en niet de werkmap.

ref: Wat is het verschil tussen “–tree-filter” en “–index-filter” in de “git filter-branch”?
ref: https://git-scm.com/docs/git-filter-branch


Antwoord 3, autoriteit 14%

Volgens de officiële git-documenten, met behulp van git filter-branchwordt sterk afgeraden, en de aanbevolen aanpak is om de bijgedragen git- filter-repocommando.

Installeerhet (via pakket, of met pakket python3-pip, doe een pip-installatie).

Het commando om filenameis dan:

git filter-repo --invert-paths --path filename

De optie --invert-pathsgeeft aan om de volgende paden uit te sluiten en niet op te nemen.

Other episodes