So enttracken Sie Dateien (git und git GUI)

Lesezeit: 3 Minuten

Benutzer-Avatar
KansaiRobot

Ich verwende Git GUI (zusammen mit Git Bash). Jetzt weiß ich, wenn ich Dateien für Git ignorieren möchte, muss ich sie in eine .gitignore-Datei einfügen.

1) Ich habe erfahren, dass git in Windows keine .gitignore-Datei für Sie erstellt und Sie diese selbst erstellen müssen. Auch git GUI wird das nicht tun. Ist das richtig?

Nun meine spezielle Situation:

Ich habe am Anfang bei der Verwaltung dieses Projekts einen Fehler gemacht und zusammen mit meinen .c- und .h-Dateien habe ich auch eine andere Datei verfolgt (nennen wir sie “shouldnottrack.file”). Diese Datei wird vom Build-Prozess generiert und sollte daher im Prinzip nicht verfolgt werden.

Aber ich habe es getan und es wurde in die Commits aufgenommen (staged, commited usw.).

Jetzt will ich untrack Diese Datei.

Ich habe es zeitlich durch das Tun getan git checkout -- shouldnottrack.file aber das funktioniert nur einmal

  1. Wie kann ich diese Datei untracken? (GUI, Befehl, jede Methode ok)

  2. Wenn ich diese Datei in die .gitignore-Datei einfüge, wird Git sie dann automatisch untracken?

Benutzer-Avatar
Philipp

Sie müssen es hinzufügen .gitignore und Entfernen Sie es aus dem Git-Repository, damit es aufhört, es zu verfolgen.

.gitignore hat keine Auswirkungen auf bereits verfolgte Dateien.

Sie haben 2 Möglichkeiten, je nachdem, ob Sie Ihre Dateien weiterhin im Arbeitsverzeichnis behalten möchten oder nicht:

  • Wenn Sie die Dateien in Ihrem Arbeitsverzeichnis löschen möchtentun git rm.
  • Wenn du sie behalten willst aber hör einfach auf, sie zu verfolgen, tu es git rm --cached.

Bestätigen Sie dann diese Dateilöschung.

  • Wird die Datei mit ‘git rm’ nicht gelöscht? Ich möchte die Datei behalten (nicht löschen), nur nicht verfolgt.

    – KansaiRobot

    9. Dezember 2016 um 1:21 Uhr

  • Warum ist es ein Problem, weil Sie es regenerieren, wenn das ein Build-Ergebnis ist? Wie auch immer, das sollte ‘git rm –cached’ sein

    – Philipp

    9. Dezember 2016 um 19:57 Uhr

  • Ich verstehe, also wird das nächste Mal, wenn ich baue (und die Datei bekomme), dies nicht nachverfolgt? (dann setze ich es auf die Ignorierliste)

    – KansaiRobot

    10. Dezember 2016 um 6:58 Uhr

  • Die Ignorierliste wird nur für nicht nachverfolgte Dateien verwendet, sodass Sie dies tun können, wenn Sie möchten (sofort!), aber Sie werden ihre Wirkung sehen, sobald die Datei nicht nachverfolgt wurde (sobald Sie ihre Löschung vorgenommen haben).

    – Philipp

    10. Dezember 2016 um 12:32 Uhr

  • Das habe ich dir in meinem 2. Kommentar gesagt 😉

    – Philipp

    13. Dezember 2016 um 11:08 Uhr

Benutzer-Avatar
Dylan Scott

Ich bin mir bei Ihrer ersten Frage nicht sicher, da ich ausschließlich die Git-CLI verwende, aber für Ihre zweite Frage versuchen Sie Folgendes:

'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE' \
--prune-empty --tag-name-filter cat -- --all```

Replacing PATH-TO-YOUR-FILE with the actual file name you want to scrub from the history. You should see something along the lines of:

Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266) Ref refs/heads/master wurde neu geschrieben


If it was successful - After this if you have already pushed to your remote you will need to do a `git push --force` to overwrite it. Security settings on the branch may deny the push.

Finally for your last question to prevent this happening again add the file in question to your ignore file and git will prevent any tracking from occurring.

The above answer will work however I strongly suggest this approach if the data was sensitive - ie passwords, ssh keys etc as the files will still be in history.

You can read more here https://help.github.com/articles/removing-files-from-a-repository-s-history/ and here https://help.github.com/articles/remove-sensitive-data/.

1145210cookie-checkSo enttracken Sie Dateien (git und git GUI)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy