it-swarm.com.de

git füge nur geänderte Änderungen hinzu und ignoriere nicht aufgespürte Dateien

Ich lief "git status" und unten sind einige Dateien aufgeführt, die geändert wurden, bzw. unter der Überschrift "Änderungen, die nicht für das Festschreiben bereitgestellt wurden" . Außerdem wurden einige nicht aufgespürte Dateien aufgelistet, die ich ignorieren möchte (ich habe ein ".gitignore" Datei in diesen Verzeichnissen).

Ich möchte die modifizierten Dateien in Staging setzen, damit ich sie festschreiben kann. Wenn ich "git add." Ausgeführt habe, fügte es die geänderten Dateien UND die Dateien hinzu, die ich zum Staging ignorieren möchte.

Wie füge ich nur die geänderten Dateien hinzu und ignoriere die nicht protokollierten Dateien, wenn unten der git-Status 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")
529
Steve

Idealerweise sollte Ihr .gitignore verhindern, dass die nicht protokollierten (und ignorierten) Dateien im Status angezeigt und mit git add usw. hinzugefügt werden. Daher möchte ich Sie bitten, Ihren .gitignore

Sie können git add -u tun, damit die geänderten und gelöschten Dateien in Szene gesetzt werden.

Sie können mit git commit -a auch nur die geänderten und gelöschten Dateien festschreiben.

Wenn Sie Git der Version vor 2.0 haben und git add . verwenden, müssen Sie git add -u . verwenden (siehe " Unterschied zwischen" git add -A "und" git add . " ").

741
manojlds

Das hat für mich funktioniert:

#!/bin/bash

git add `git status | grep modified | sed 's/\(.*modified:\s*\)//'`

Oder noch besser: 

$ git ls-files --modified | xargs git add
85
user877329

Sie haben nicht gesagt, was derzeit Ihr .gitignore ist, aber ein .gitignore mit dem folgenden Inhalt in Ihrem Stammverzeichnis sollte den Trick ausführen.

.metadata
build
4
Karl Bielefeldt
git commit -a -m "message"

-a: Bezieht 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

1
Saurabh

Nicht sicher, ob dies eine Funktion oder ein Fehler ist, aber das hat für 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 wurden, und nicht nachverfolgte Dateien ignorieren.

0
Erik Englund

Ich habe dies versucht, damit ich zuerst die Liste der Dateien sehen konnte:

git status | grep "modified:" | awk '{print "git add  " $2}' > file.sh

cat ./file.sh

ausführen:

chmod a+x file.sh
./file.sh 

Edit: (siehe Kommentare) Dies konnte in einem Schritt erreicht werden: 

git status | grep modified | awk '{print $2}' | xargs git add && git status
0
Mike Q