Uruchomiłem „git status”, a poniżej wymieniono niektóre pliki, które zostały zmodyfikowane / lub pod nagłówkiem „zmiany nie zostały wprowadzone do zatwierdzenia”. Zawiera także listę nieśledzonych plików, które chcę zignorować (w tych katalogach mam plik „.gitignore”).
Chcę umieścić zmodyfikowane pliki na etapie przemieszczania, aby móc je zatwierdzić. Kiedy uruchomiłem „git add.”, Dodało zmodyfikowane pliki ORAZ pliki, które chcę zignorować do inscenizacji.
Jak dodać tylko zmodyfikowane pliki i zignorować nieśledzone pliki, jeśli podano poniżej status git.
Czy moje pliki „.gitignore” działają poprawnie?
$ 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")
Odpowiedzi:
Idealnie
.gitignore
powinieneś zapobiegać wyświetlaniu statusu nieśledzonych (i ignorowanych) plików, dodawaniu za pomocągit add
itp. Więc poprosiłbym cię o poprawienie.gitignore
Możesz to zrobić,
git add -u
aby wyrównać zmodyfikowane i usunięte pliki.Możesz także zrobić,
git commit -a
aby zatwierdzić tylko zmodyfikowane i usunięte pliki.Zauważ, że jeśli korzystasz z Gita w wersji wcześniejszej niż 2.0 i używasz go
git add .
, musisz go użyćgit add -u .
(patrz „ Różnica międzygit add -A
” i „git add .
” ”).źródło
add -u
) nie dodaje tylkomodified
plików, ale także „dodaje”deleted
te… coś , czemu obecnie próbuję zapobiec.for fil in $(git diff --name-only --relative); do git add $fil; done
. Gdybym miał go często używać (nie używam), po prostu zrobiłbym dla tego alias w moim~/.bashrc
pliku. To działa oczywiście tylko w bash.IFS=$(echo -en "\n\b"); for file in $(git diff --name-only); do git add "$file"; done
git add -u
jest skrótem odgit add --update
igit commit -a
oznaczagit commit --all
To działało dla mnie:
Lub nawet lepiej:
źródło
git add -u
, więc nie odpowiada na pytanie.-a: Obejmuje wszystkie aktualnie zmienione / usunięte pliki w tym zatwierdzeniu. Należy jednak pamiętać, że nieśledzone (nowe) pliki nie są uwzględniane.
-m: Ustawia komunikat zatwierdzenia
źródło
Nie powiedziałeś, co jest obecnie
.gitignore
, ale.gitignore
z następującą zawartością w twoim katalogu głównym powinno załatwić sprawę.źródło
gitognore
zawierał początek (zignoruj wszystko). Ale jeden.gitignore
w górnym katalogu jest zwykle o wiele prostszy w użyciu i wystarcza.Zdarzyło mi się to wypróbować, aby najpierw zobaczyć listę plików:
wykonać:
Edycja: (patrz komentarze) Można to osiągnąć w jednym kroku:
źródło
git status | grep modified | awk '{print $2}' | xargs git add && git status
Nie jestem pewien, czy jest to funkcja, czy błąd, ale działało to dla nas:
git commit '' -m "Message"
Zanotuj pustą listę plików ''. Git interpretuje to, aby zatwierdzić wszystkie zmodyfikowane pliki śledzone, nawet jeśli nie są one przemieszczane, i zignorować nieśledzone pliki.
źródło
Aby edytować zmodyfikowane i usunięte pliki
git add -u
źródło