2010-02-28 8 views
22

Wie kann ich Dateien, die mit Punkt (versteckten Dateien) beginnen, in git repo hinzufügen? Git scheint diese immer zu ignorieren.Erzwinge git, um dotfiles zum Repository hinzuzufügen

Wenn ich "git add." Eintippe, werden dotfiles in GIT_DIR hinzugefügt, aber nicht aus Unterverzeichnissen. Auf der anderen Seite wird "git add subdir/.dotfile" nicht funktionieren.

Ich habe "git add -f" versucht und "!. *" In GIT_DIR/.git/info/exclude gesetzt. Kein Glück.

+2

"Berühren". Punktdatei; git add .dotfile "arbeite in der obersten Ebene? Das sieht ein bisschen aus wie '. *' ist in einer .gitignore Datei aufgelistet (vielleicht im Unterverzeichnis), aber wenn ich das teste (zugegeben mit einer ziemlich neuen Version von git) Ich erhalte eine Warnung, die darauf hinweist, dass ich das Flag -f verwenden muss, um hinzuzufügen. –

Antwort

11

Sie können sie gezielt durch Pfadnamen hinzufügen, zum Beispiel

git add */.* 

oder

find . -name '.[a-z]*' -exec git add '{}' ';' 

(Es ist gut mit den -name vorsichtig zu sein, denn Sie müssen nicht jedes Verzeichnis abholen wollen mit seinem . Eintrag.)

Aber bei weitem der einfachste Weg, dies zu tun ist mit git gui. Klicken Sie einfach auf die Dateien.

+0

Welche GUI? Ich suche Git-Tool, das diese Dateien zeigt und Giggle, Git Cola und gitg versucht und sie nicht .files und ich nicht Siehe irgendeine Option, um sie anzuzeigen ... – Line

+0

@Line von der Eingabeaufforderung, geben Sie "git gui" und die vorverpackte GUI sollte (unter Windows) – avgvstvs

+0

@avgvstvs, danke, aber was ist, wenn ich nur Linux (neuste Ubuntu/Fedora)? :) – Line

23

git add . und git add dir/.dot funktionieren gut für mich mit den ungeschmückten 1.6.6.1 und 1.7.0 Versionen von Git, die ich gerade jetzt habe.

% git --version 
git version 1.6.6.1 
% git ls-files -o 
.baz/baz 
.foo 
bar/.bar 
quuux/quuux 
quux 
% git add . 
% git ls-files -o 
% git ls-files 
.baz/baz 
.foo 
bar/.bar 
quuux/quuux 
quux 

Welche Version von Git verwenden Sie? Sind Ihre Unterverzeichnisse tatsächlich Untermodule (die unabhängig voneinander verwaltet werden)?

"dot files" sind standardmäßig nicht ausgeschlossen, aber vielleicht ist ein bisschen Konfiguration in Ihrem System, Repository oder Arbeitsbaum so eingestellt. Wenn sie in git ls-files --exclude-standard -oi angezeigt werden, dann werden sie ignoriert und "!. *" Ist der richtige Weg, um sie "unignore" zu machen. Aber um effektiv zu sein, muss dieses Muster am richtigen Ort sein. Ignoriert werden in dieser Reihenfolge verarbeitet:

  • .gitignore des unmittelbar enthaltenden Verzeichnis, dann
  • .gitignore des übergeordneten Verzeichnisses (jedem Elternteil, bis in das Repository root), dann
  • $ GIT_DIR/info/ausschließen, dann
  • die von git config core.excludesfile berichtet Datei (die von
      gesetzt werden konnte
    • $ GIT_DIR/config,
    • $ HOME/.gitconfig oder
    • die System-Konfigurationsdatei (versuchen GIT_EDITOR=echo git config --system --edit seinen Pfad zu bekommen)).

Wenn ein Pfadname ein Muster in einer Datei übereinstimmt, werden die nachfolgenden Dateien nicht zu Rate gezogen. Die letzte Übereinstimmung in jeder Datei "gewinnt". Ein Muster in $ GIT_DIR/info/exclude kann niemals ein Muster in einer .gitignore Datei überschreiben. Also, wenn die Dateien ignoriert werden (per git ls-files --exclude-standard -oi) und wenn "!.*“In $ GIT_DIR/info/ausschließen unwirksam ist, dann lassen Sie die geltenden .gitignore Dateien für den Täter.

+1

Ihre Antwort hilft mir. Danke – inix

2

Interessanter unter Windows 10 mit git Version 2.12.0.windows.1 unter fließendem "Git-Bash" ein "git add. *" scheitert ebenfalls. Dateien wie .classpath und .project usw. werden nicht hinzugefügt und daher später nicht commited. Aber gut, das ist der falsche Ort, um einen Fehlerbericht zu erstellen.

+0

was ist das Problem? –

+0

Ich glaube, ich habe sie einzeln ohne einen Platzhalter (*) hinzugefügt. Entschuldigung, habe momentan keinen Zugang zu einem Windows-Rechner. –

+0

Ich habe auch dieses Problem. Windows 10 64 + git-2.14.2-64, das unter Git-Bash 'git add *' läuft, fügt nur einige Dateien hinzu. Dateien, deren Name mit '.' beginnt, werden nicht hinzugefügt. Also nicht verpflichtet. Ich habe keinen Fehlerbericht in https://github.com/git-for-windows/git/issues gefunden – Fsr