10 Stimmen

Git ignoriert das Muster .gitattributes

Ich habe eine Verzeichnisstruktur wie diese:

root/
  .git
  deploy/
  Site/
    blah/
    more_blah/
      something.local
      else.development
    Rakefile
    .gitattributes

Bearbeitung: Zur weiteren Klärung haben Verzeichnisse ein abschließendes / und Kinder werden unter einem Verzeichnis eingerückt, also sind blah und more_blah Verzeichnisse, aber Rakefile und .gitattributes sind Dateien, aber alle vier sind Kinder von Site.


Ich führe git-archive vom Verzeichnis Site aus aus

git archive --format=tar --prefix=git-v0.0.1/ v0.0.1 | gzip > ../deploy/git-v0.0.1.tar.zip

aber egal welches Muster ich in .gitattributes setze, das resultierende Archiv enthält immer Rakefile. Ich habe versucht:

  • Rakefile
  • Site/Rakefile
  • */Rakefile
  • ./Rakefile
  • Rakefile*
  • *

Keines davon funktioniert wie erwartet. Ist jemand bereit, mir die offensichtliche, aber nicht offensichtliche Lösung zu zeigen? Jede Hilfe ist sehr geschätzt.


Entschuldigung, dass ich nicht klar war.

  • Ich sagte, dass das von mir verwendete Muster nicht zu funktionieren scheint, aber ich verwende "export-ignore" nach dem Muster.
  • Rakefile ist kein Verzeichnis, sondern nur eine Datei
  • Die .gitattributes-Datei ist erfolgreich dabei, andere Muster aus dem Archiv zu entfernen, Rakefile ist nicht das einzige verwendete Muster, funktioniert aber nicht. Es funktioniert nicht, egal ob ich es alleine oder mit anderen Mustern verwende, und an jeder Stelle in der Datei. Das ist nicht wahr, aufgrund der Umbenennung bestimmter Dateien, aber das Commit mit der Umbenennung nicht zu archivieren, schien ich einige gute Ergebnisse zu bekommen. Mein Fehler! :S

Dies ist meine .gitattributes (befindet sich im Verzeichnis Site)

Rakefile        export-ignore
*.local         export-ignore
*.development   export-ignore
*.staging       export-ignore

2voto

Tim Lum Punkte 1017

Für Verzeichnisse hatte ich Probleme mit verschiedenen Versionen von git, daher musste ich einen Eintrag sowohl mit als auch ohne abschließenden Schrägstrich einbeziehen:

  • foo/bar export-ignore
  • foo/bar/ export-ignore

Wo foo/bar relativ zu dem ist, wo ich git archive ausgeführt habe, aber die tatsächliche .gitattributes-Datei befand sich im Projektstammverzeichnis zusätzlich zu --worktree-attributes wie oben erwähnt.

1voto

Arrowmaster Punkte 8957

Versuchen Sie, die Dateien im Repository einzubeziehen, aber nicht im Archiv, das von git archive erstellt wurde? Wenn ja, ist die Syntax Ihrer .gitattributes Dateien falsch. Wenn nicht, ist .gitattributes nicht das, was Sie verwenden sollten.

Um Dateien aus dem Archiv ausgeschlossen zu haben, das von git archive erstellt wurde, sollten Sie Folgendes in die .gitattributes einfügen.

Rakefile export-ignore

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X