Saya menjalankan "git status" dan terdaftar di bawah ini adalah beberapa file yang dimodifikasi / atau di bawah judul "perubahan tidak dipentaskan untuk komit". Itu juga mencantumkan beberapa file yang tidak dilacak yang ingin saya abaikan (saya punya file ".gitignore" di direktori ini).
Saya ingin menempatkan file yang dimodifikasi dalam pementasan sehingga saya bisa mengkomitnya. Ketika saya menjalankan "git add.", Itu menambahkan file yang dimodifikasi DAN file yang ingin saya abaikan untuk pementasan.
Bagaimana cara menambahkan hanya file yang dimodifikasi dan mengabaikan file yang tidak terlacak jika disajikan dengan status git di bawah ini.
Juga, apakah file ".gitignore" saya berfungsi dengan baik?
$ 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")
Jawaban:
Idealnya Anda
.gitignore
harus mencegah file yang tidak terlacak (dan diabaikan) agar tidak ditampilkan dalam status, ditambahkan menggunakangit add
dll. Jadi saya akan meminta Anda untuk memperbaiki Anda.gitignore
Anda dapat melakukannya
git add -u
sehingga akan mem-stage file yang dimodifikasi dan dihapus.Anda juga dapat melakukan
git commit -a
untuk hanya melakukan file yang dimodifikasi dan dihapus.Perhatikan bahwa jika Anda memiliki Git versi sebelum 2.0 dan digunakan
git add .
, maka Anda harus menggunakangit add -u .
(Lihat " Perbedaan"git add -A
"dan"git add .
" ").sumber
add -u
) tidak hanya menambahkanmodified
file, itu juga "menambahkan"deleted
yang .. sesuatu yang saat ini saya coba cegah.for fil in $(git diff --name-only --relative); do git add $fil; done
. Jika saya sering menggunakannya (saya tidak), saya hanya akan membuat alias untuk ini di~/.bashrc
file saya . Ini, tentu saja, hanya bekerja di bash.IFS=$(echo -en "\n\b"); for file in $(git diff --name-only); do git add "$file"; done
git add -u
adalah kependekan darigit add --update
dangit commit -a
merupakan kependekan darigit commit --all
Ini bekerja untuk saya:
Atau lebih baik lagi:
sumber
git add -u
, sehingga tidak menjawab pertanyaan.-a: Termasuk semua file yang saat ini diubah / dihapus dalam komit ini. Perlu diingat, bagaimanapun, bahwa file yang tidak terlacak (baru) tidak termasuk.
-m: Mengatur pesan komit
sumber
Anda tidak mengatakan apa yang Anda miliki saat ini
.gitignore
, tetapi a.gitignore
dengan konten berikut di direktori root Anda harus melakukan trik.sumber
gitognore
berisi awal (abaikan semuanya). Tetapi satu.gitignore
di direktori teratas biasanya lebih sederhana untuk digunakan dan mencukupi.Saya kebetulan mencoba ini sehingga saya bisa melihat daftar file terlebih dahulu:
menjalankan:
Sunting: (lihat komentar) Ini dapat dicapai dalam satu langkah:
sumber
git status | grep modified | awk '{print $2}' | xargs git add && git status
Tidak yakin apakah ini fitur atau bug tetapi ini berhasil bagi kami:
git commit '' -m "Message"
Perhatikan daftar file kosong ''. Git menafsirkan ini untuk mengkomit semua file terlacak yang dimodifikasi, bahkan jika mereka tidak dipentaskan, dan mengabaikan file yang tidak terlacak.
sumber
Untuk menampilkan file yang dimodifikasi dan dihapus
git add -u
sumber