2012-04-05 9 views
0

Ich habe eine Reihe von Java-Dateien in meinem aktuellen Java-Projekt, die ich weiter modifiziere, und ich möchte sie alle auf einen Schlag aus dem Stammordner des Projekts (in Ubuntu) hinzufügen.git add. /*.java funktioniert nicht?

Ich habe versucht:

git add ./*.java 

aber das tut es nicht. Ich habe versucht, das asterisk wie folgt zu entkommen:

git add ./\*.java 

aber das tut es nicht. Dann habe ich versucht, es so zu zitieren:

git add "./*.java" 

aber das tut es nicht.

Die Manpage für "git add" gibt dies als Beispiel:

Fügt Inhalt aus allen * .txt-Dateien unter Dokumentationsverzeichnis und dessen Unterverzeichnissen:

  $ git add Documentation/\*.txt 

I versucht, ein Verzeichnis wie "Dokumentation" oben zu verwenden, um dies zu qualifizieren, aber das funktioniert auch nicht.

Was fehlt mir?

[aktualisiert] habe ich versucht, unter @ GoZoner Vorschlag und es funktioniert, aber nur, wenn die Dateien sind neu, und nicht, wenn sie bereits bestehend diejenigen, die aktualisiert wurden. Das ist sehr merkwürdig.

+0

Welchen Fehler bekommen Sie? Entweder 'git add ./*. Java' oder' git add * .java' sollten alle Java-Dateien im aktuellen Verzeichnis hinzufügen. Wenn es erfolgreich ist, werden Sie keine Informationen sehen. Was sagt 'git status'? –

+1

Ersetzen Sie die Wörter "git add" durch "ls" und versuchen Sie es erneut. Insbesondere "ls ./*.java". Wenn nichts in der 'ls'-Liste erscheint, wird' git add 'auch nichts finden. – GoZoner

+0

+1 zu @GoZoner. FileGlobbing wird von der Shell ausgeführt, nicht von dem Programm, das aufgerufen wird. Testen Sie, was Sie hinzufügen, indem Sie ls für dasselbe Muster verwenden. –

Antwort

0

Statt tun ‚git add‘ Verwendung:

git status 

, die Ihnen zeigen, welche Dateien neu sind (unbekannt von git) und welche Dateien geändert wurden. Noch wichtiger für Ihren Fall ist, dass git status den vollständigen Pfad zu den gemeldeten Dateien anzeigt. Wenn Sie den vollständigen Pfad kennen, können Sie ihn nach und nach mit 'git add full-path-to.java' hinzufügen, oder, wenn alles nach Commitable aussieht, fügt 'git add-A' alle hinzu.

+0

Ich bin mir dessen bewusst; Normalerweise sage ich "git add". und inszeniere meine Änderungen. Ich suche nach einer Möglichkeit, ein paar Dateien zu überspringen, die eine andere Erweiterung haben als die, an der ich interessiert bin ... – scorpiodawg

+0

Im Moment ist es wichtig, * die * .java-Dateien * zu sehen, die hinzugefügt werden sollen . Willst du damit sagen, dass 'git status' eine Liste von Dateien anzeigt und wenn du 'git add' auf einem beliebigen davon verwendest, mit dem vollständigen Pfad, wird es nicht hinzugefügt? – GoZoner

0

Sie müssen die '.'

git add \./\*.java 

funktioniert.

$ git add \./\*.c 
$ git status 
# On branch br1 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: bang/boo.c 
# new file: bing/one.c 
# 
+0

Das ist interessant: Ihre Lösung funktioniert, aber * nur * für neue Dateien. Wenn Sie Ihre Änderung oben bestätigen und nun boo.c aktualisieren, übernimmt die git add-Anweisung die Änderung nicht mehr. – scorpiodawg

+0

Nicht für mich. Ich habe den obigen Index festgelegt und zwei Dateien hinzugefügt. Dann habe ich bang/boo.c geändert. 'git status' zeigte die Dateien als 'nicht zum Festschreiben bereitgestellt' an. Dann habe ich den gleichen 'git add' Befehl wie oben verwendet. Ein 'git-Status' zeigt bang/boo.c als 'Änderungen, die ausgeführt werden sollen'. – GoZoner

+0

Seltsam. Mit welcher Shell/Betriebssystem bist du beschäftigt? – scorpiodawg

0

Wenn Sie sich auf Dateien beschränken möchten git bereits kennt, könnte man git-ls-Dateien mit einem Filter kombinieren:

git ls-files [path] | grep '\.java$' | xargs git add

Hier müssen Sie den Pfad angeben, um Ihre Ordner.

ODER

Hier geben Sie Anweisung gecached c und andere o Dateien zu zeigen, während Standard git Ausschlüsse ausgenommen: .git/info/ausschließen, in jedem Verzeichnis .gitignore, und der Benutzer die globale Ausschlussdatei

git ls-files -co --exclude-standard | grep '\.java$'| xargs git add

Aus dieser Antwort Recursively add files by pattern.