gitignore binäre Dateien, die keine Erweiterung haben

Lesezeit: 5 Minuten

gitignore binare Dateien die keine Erweiterung haben
Juan Pablo

Wie können Binärdateien in ignoriert werden git Verwendung der .gitignore Datei?

Beispiel:

$ g++ hello.c -o hello

Die “Hallo”-Datei ist eine Binärdatei. dürfen git diese Datei ignorieren?

  • mögliches Duplikat von Wie füge ich Dateien ohne Punkte in ihnen (alle Dateien ohne Erweiterung) zur gitignore-Datei hinzu?

    – Verrückter Physiker

    9. Juli 2015 um 21:13 Uhr

  • Ich bin sehr überrascht, dass es auf eine so alte und wichtige Frage keine richtige Antwort gibt. Ich bin noch mehr überrascht, dass die Antwort ein direkter ist [^\.]*.

    – TamaMcGlinn

    3. Oktober 2018 um 15:13 Uhr

  • das geht nicht

    – Timotheecour

    23. April 2020 um 6:36 Uhr

  • Sie sollten wahrscheinlich ein anderes Verzeichnis als Ihre Quelldateien erstellen und das Build-Verzeichnis ignorieren.

    – George

    16. Juli 2021 um 8:51 Uhr

# Ignore all
*

# Unignore all with extensions
!*.*

# Unignore all dirs
!*/

### Above combination will ignore all files without extension ###

# Ignore files with extension `.class` & `.sm`
*.class
*.sm

# Ignore `bin` dir
bin/
# or
*/bin/*

# Unignore all `.jar` in `bin` dir
!*/bin/*.jar

# Ignore all `library.jar` in `bin` dir
*/bin/library.jar

# Ignore a file with extension
relative/path/to/dir/filename.extension

# Ignore a file without extension
relative/path/to/dir/anotherfile

  • Diese Lösung funktioniert wie ein Zauber! Ich verstehe nicht, warum durch Unignorieren aller Verzeichnisse “!*/” auch die Dateien von Unterverzeichnissen mit einer Erweiterung unignoriert werden können? (z. B. aaa/bbb.c), aber immer noch die Datei des Unterverzeichnisses ohne Erweiterungen ignorieren. (z. B. aaa/ccc)

    – dragonxlwang

    14. November 2015 um 21:21 Uhr


  • Scheint, dass diese Methode nicht wie erwartet funktioniert, nachdem ich festgestellt habe, dass bei mehreren Verzeichnisebenen …

    – dragonxlwang

    14. November 2015 um 22:02 Uhr

  • @dragonxlwang Ich bin neugierig, wo würde das nicht funktionieren? Die hier akzeptierte Lösung stackoverflow.com/a/19023985/1426932 ist etwas anders und verwendet !/**/ anstatt !*/ ; was ist richtig? /cc @VonC

    – Timotheecour

    25. Januar 2019 um 10:17 Uhr

  • In der Unix-Kultur ist es ziemlich üblich, sowohl Shell-Scripts als auch ausführbare Binärdateien ohne Erweiterungen zu benennen, in diesem Fall führt diese Lösung dazu, dass Scripts ignoriert werden. Eine bessere Idee ist es, binäre ausführbare Dateien einfach manuell zu .gitignore hinzuzufügen, wenn sie dem Projekt hinzugefügt werden – das passiert normalerweise nicht allzu oft. Wenn das zu umständlich ist, dann ist die von vedantk vorgeschlagene Makefile-Lösung besser.

    – Peter Helfer

    14. Februar 2019 um 19:32 Uhr


  • Dadurch wird das Makefile ignoriert

    – VMatrix1900

    13. Februar 2020 um 1:36 Uhr

1646305689 653 gitignore binare Dateien die keine Erweiterung haben
manojlds

Fügen Sie etwas hinzu wie

*.o

in der .gitignore-Datei und platzieren Sie sie im Stammverzeichnis Ihres Repos (oder Sie können sie in einem beliebigen Unterverzeichnis ablegen – es gilt ab dieser Ebene) und checken Sie sie ein.

Bearbeiten:

Bei Binärdateien ohne Erweiterung sollten Sie sie besser einfügen bin/ oder ein anderer Ordner. Schließlich gibt es kein Ignorieren basierend auf dem Inhaltstyp.

Du kannst es versuchen

*
!*.*

aber das ist nicht idiotensicher.

  • Bearbeiten hinzugefügt. Gibt es einen Grund, warum Sie nicht möchten, dass Ihre Binärdatei eine Erweiterung hat?

    – manojlds

    19. April 2011 um 3:20 Uhr

  • Ausführbare Dateien haben oft keine Erweiterungen. Ich versuche hier dasselbe für Dateien zu tun, die von erstellt wurden gcc Vorbeigehen -o $@.

    – Nathan Lilienthal

    11. September 2013 um 16:27 Uhr

  • * ignoriert alles, auch Verzeichnisse, also !*.* wird die Ignorierung innerhalb von Verzeichnissen nicht rückgängig machen, also fügen Sie hinzu !*/ zu .gitignore hinzufügen, um Verzeichnisse hinzuzufügen, dann wird `!*.* auch Dateien in Verzeichnissen mit Erweiterungen unignorieren

    – Isaac Weingarten

    14. Dezember 2021 um 21:10 Uhr

gitignore binare Dateien die keine Erweiterung haben
icks

Um alle ausführbaren Dateien an Ihre anzuhängen .gitignore (was Sie Ihrer Frage nach wahrscheinlich mit “Binärdatei” meinen), können Sie verwenden

find . -executable -type f >>.gitignore

Wenn Sie sich nicht um die Reihenfolge der Zeilen in Ihrem kümmern .gitignoreSie könnten auch Ihre aktualisieren .gitignore mit dem folgenden Befehl, der auch Duplikate entfernt und die alphabetische Reihenfolge beibehält.

T=$(mktemp); (cat .gitignore; find . -executable -type f | sed -e 's%^\./%%') | sort | uniq >$T; mv $T .gitignore

Beachten Sie, dass Sie die Ausgabe nicht direkt weiterleiten können .gitignoreweil das die Datei vorher abschneiden würde cat öffnet es zum Lesen. Vielleicht möchten Sie auch hinzufügen \! -regex '.*/.*/.*' als Option zu finden, wenn Sie keine ausführbaren Dateien in Unterverzeichnisse einschließen möchten.

  • Eine mögliche Aktualisierung dieser Antwort könnte sein find . -executable -type f ! -name "*.*" um nur die ausführbaren Dateien ohne Erweiterung zu erhalten.

    – kellekai

    4. Januar um 8:00 Uhr

Bei Binärdateien ist es am besten, ihnen entweder eine Erweiterung zu geben, die Sie einfach mit einem Standardmuster herausfiltern können, oder sie in Verzeichnisse zu legen, die Sie auf Verzeichnisebene herausfiltern können.

Der Erweiterungsvorschlag gilt eher für Windows, da Erweiterungen standardmäßig und grundsätzlich erforderlich sind, aber unter Unix können Sie Erweiterungen für Ihre ausführbaren Binärdateien verwenden oder nicht. In diesem Fall können Sie sie in einen bin/-Ordner legen und hinzufügen bin/ zu Ihrer .gitignore.

In Ihrem sehr spezifischen Beispiel mit kleinem Umfang können Sie einfach setzen hello in deiner .gitignore.

Binärdateien sind oft ohne Erweiterungen. Wenn dies Ihr Fall ist, versuchen Sie Folgendes:

*
!/**/
!*.*

REF: https://stackoverflow.com/a/19023985/1060487

Sie können in Ihrem versuchen .gitignore:

*
!*.c

Dieser Ansatz hat viele Nachteile, ist aber für kleine Projekte akzeptabel.

1646305690 738 gitignore binare Dateien die keine Erweiterung haben
vedantk

Wenn Sie ein Makefile verwenden, können Sie versuchen, Ihre Make-Regeln zu ändern, um die Namen neuer Binärdateien an Ihre .gitignore-Datei anzuhängen.

Hier ist ein Beispiel-Makefile für ein kleines Haskell-Projekt;

all: $(patsubst %.hs, %, $(wildcard *.hs))

%: %.hs
    ghc $^
    grep -xq "$@" .gitignore || echo $@ >> .gitignore

Dieses Makefile definiert eine Regel zum Erstellen von ausführbaren Dateien aus Haskell-Code. Nachdem ghc aufgerufen wurde, überprüfen wir die .gitignore-Datei, um festzustellen, ob die Binärdatei bereits darin enthalten ist. Ist dies nicht der Fall, hängen wir den Namen der Binärdatei an die Datei an.

  • Das ist jetzt ein etwas anderer Ansatz.

    – René Nyffenegger

    18. Januar 2018 um 16:45 Uhr

922740cookie-checkgitignore binäre Dateien, die keine Erweiterung haben

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

Privacy policy