Ich habe "git status" ausgeführt und unten sind einige Dateien aufgeführt, die geändert wurden / oder unter der Überschrift "Änderungen, die nicht für das Festschreiben bereitgestellt wurden". Es wurden auch einige nicht verfolgte Dateien aufgelistet, die ich ignorieren möchte (ich habe eine ".gitignore" -Datei in diesen Verzeichnissen).
Ich möchte die geänderten Dateien in Staging stellen, damit ich sie festschreiben kann. Wenn ich "git add." Ausführte, wurden die geänderten Dateien UND die Dateien, die ich ignorieren möchte, zum Staging hinzugefügt.
Wie füge ich nur die geänderten Dateien hinzu und ignoriere die nicht verfolgten Dateien, wenn der Git-Status unten angezeigt wird.
Funktionieren meine ".gitignore" -Dateien auch ordnungsgemäß?
$ git status
# On branch addLocation
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: someProject/path/domain/viewer/LocationDO.java
# modified: someProject/path/service/ld/LdService.java
# modified: someProject/path/service/ld/LdServiceImpl.java
# modified: someProject/path/web/jsf/viewer/LocationFormAction.java
# modified: someProject/war/WEB-INF/classes/message/viewer/viewer.properties
# modified: someProject/war/page/viewer/searchForm.xhtml
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .metadata/
# someProject/build/
no changes added to commit (use "git add" and/or "git commit -a")
Antworten:
Idealerweise
.gitignore
sollten Sie verhindern, dass nicht verfolgte (und ignorierte) Dateien im Status angezeigt, mitgit add
usw. hinzugefügt werden . Daher möchte ich Sie bitten, Ihre zu korrigieren.gitignore
Sie können dies
git add -u
tun, damit die geänderten und gelöschten Dateien bereitgestellt werden.Sie können auch
git commit -a
nur die geänderten und gelöschten Dateien festschreiben.Beachten Sie, dass Sie Git der Version vor 2.0 verwenden
git add .
müssengit add -u .
(siehe " Unterschied von"git add -A
"undgit add .
" ").quelle
add -u
) fügt nicht nurmodified
Dateien hinzu, sondern "fügt" auch Dateien hinzu. Diesdeleted
versuche ich derzeit zu verhindern.for fil in $(git diff --name-only --relative); do git add $fil; done
. Wenn ich es häufig verwenden würde (ich nicht), würde ich einfach einen Alias dafür in meiner~/.bashrc
Datei erstellen. Dies funktioniert natürlich nur in Bash.IFS=$(echo -en "\n\b"); for file in $(git diff --name-only); do git add "$file"; done
git add -u
ist kurz fürgit add --update
undgit commit -a
ist kurz fürgit commit --all
Das hat bei mir funktioniert:
Oder noch besser:
quelle
git add -u
, sodass die Frage nicht beantwortet wird.-a: Schließt alle aktuell geänderten / gelöschten Dateien in dieses Commit ein. Beachten Sie jedoch, dass nicht verfolgte (neue) Dateien nicht enthalten sind.
-m: Legt die Nachricht des Commits fest
quelle
Sie haben nicht gesagt, was aktuell Ihr ist
.gitignore
, aber ein.gitignore
mit den folgenden Inhalten in Ihrem Stammverzeichnis sollte den Trick tun.quelle
gitognore
enthielt einen Start (alles ignorieren). Aber eine Single.gitignore
im obersten Verzeichnis ist normalerweise viel einfacher zu verwenden und reicht aus.Ich habe es zufällig versucht, damit ich zuerst die Liste der Dateien sehen konnte:
ausführen:
Bearbeiten: (siehe Kommentare) Dies könnte in einem Schritt erreicht werden:
quelle
git status | grep modified | awk '{print $2}' | xargs git add && git status
Ich bin mir nicht sicher, ob dies eine Funktion oder ein Fehler ist, aber das hat bei uns funktioniert:
git commit '' -m "Message"
Beachten Sie die leere Dateiliste ''. Git interpretiert dies so, dass alle geänderten nachverfolgten Dateien festgeschrieben werden, auch wenn sie nicht bereitgestellt werden, und nicht nachverfolgte Dateien ignoriert werden.
quelle
Geänderte und gelöschte Dateien bereitstellen
git add -u
quelle