Pertanyaan git add -A tidak menambahkan semua file yang diubah dalam direktori


Saya ingin menambahkan semua file tidak peduli apa: apakah itu dihapus, dibuat, dimodifikasi, tidak terlacak, dll? Saya hanya tidak ingin menambahkan git SEMUA file saya SETIAP SAAT. Saya mencoba git add -A tetapi itu TIDAK menambahkan file yang diubah di dalam folder.

Inilah awal saya git status dalam proyek saya:

Rakib-MacBook-Pro:my-xcode-practice rakib$ git status
# On branch master
# 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)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   BankAccount (modified content, untracked content)
#   modified:   BuckysButtons (modified content, untracked content)
#   modified:   multiview (modified content, untracked content)
#   modified:   rotator (modified content, untracked content)
#   modified:   segmentedControls (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

Lalu saya letakkan git add -A:

Rakib-MacBook-Pro:my-xcode-practice rakib$ git add -A

dan kemudian di sini adalah status baru SETELAH perbuatan git add -A:

Rakib-MacBook-Pro:my-xcode-practice rakib$ git status
# On branch master
# 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)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   BankAccount (modified content, untracked content)
#   modified:   BuckysButtons (modified content, untracked content)
#   modified:   multiview (modified content, untracked content)
#   modified:   rotator (modified content, untracked content)
#   modified:   segmentedControls (modified content, untracked content)
#
no changes added to commit (use "git add" and/or "git commit -a")

Anda dapat melihat bahwa tidak ada perubahan dalam git status. Bagaimana saya mengatasi ini?

Saya juga mencoba git add . - itu tidak membantu

Saya juga mencoba git add * - itu tidak membantu


53
2017-10-11 12:37


asal


Jawaban:


Masalahnya di sini adalah itu BankAccount, BuckysButtons, multiview, rotator dan segmentedControls semua submodul git, yang bertindak seperti repositori independen dalam banyak cara.

Jika apa yang ingin Anda lakukan adalah lari git add -A . di setiap submodule, Anda bisa melakukan:

git submodule foreach --recursive git add -A .

Dan kemudian Anda dapat membuat komitmen di setiap submodule dengan:

git submodule foreach --recursive "git commit -m 'Committing in a submodule'"

(Jika Anda tidak memiliki submodules lain bersarang di dalam submodul itu, the --recursive pilihan tidak diperlukan.)

Namun, Saya tidak menyarankan melakukan ini. Anda harus hati-hati mengubah setiap submodule secara bergantian, dan mempertimbangkan bagaimana Anda ingin memperbaruinya, memperlakukan masing-masing sebagai repositori yang berdiri sendiri. Kemudian hanya lakukan versi submodul baru ini dalam proyek utama ketika Anda telah menguji bahwa proyek tersebut secara keseluruhan bekerja dengan versi baru dari setiap submodul.


Memperbarui:  Sepertinya dari pesan kesalahan yang Anda kutip di komentar di bawah ini, Anda telah menambahkan repositori git lain ini secara langsung alih-alih sebagai submodul. Ini bisa terjadi jika Anda menyalin repositori git lain ke dalam repositori Anda dan kemudian hanya menggunakan git add untuk tahap itu, daripada menambahkannya dengan git submodule add <REPOSITORY-URL>. Jika Anda benar-benar ingin ini disimpan sebagai submodul, saya akan menyarankan memindahkan mereka keluar dari repositori Anda, melakukan penghapusan mereka, dan kemudian menambahkannya dengan benar sebagai submodul dengan git submodule add


44
2017-10-11 12:50



Saya baru saja membuat ulang ini secara tidak sengaja.

Saya menyalin proyek yang saya miliki di folder lain ke repositori git baru saya. Saya tidak bermaksud menggunakannya sebagai submodul, saya bermaksud menggunakannya sebagai titik awal untuk proyek baru. Proyek yang saya salin yang sekarang menjadi subfolder dari git repo utama saya .git/ di dalamnya. Menghapus subfolder/.git/.

rm -rf subfolder/.git

Lalu semuanya masih aneh ...

git status

Tidak ada komitmen. Hmm ... Bagaimana dengan semua file ini?

Saya tidak benar-benar tahu bagaimana memperbaiki ini dengan benar dengan git, jadi saya menduplikasi direktori, dan menghapus aslinya.

cp subfolder newsubfolder    
rm -rf subfolder

Lalu saya menambahkan semua file yang diubah, dilakukan, dan didorong.

git add -A
git commit -am 'i did something and there are now files'
git push origin <branchName>

27
2018-05-03 01:50



Saya memecahkan masalah ini dengan menghapus folder .git di dalam submodul yang seharusnya dan di dalam root proyek, dan kemudian melakukan 'git init' baru


4
2018-02-20 18:17



Sebuah perbaikan yang cukup sederhana bagi saya - saya telah membuka Git Bash dalam sebuah subdirektori proyek.

Buka Bash dan lakukan perintah di direktori root untuk memperbaiki masalah ini; git add -A . bekerja sesuai harapan.


2
2017-10-29 07:06



Mari kutip dokumentasi untuk -A:

       -A, --all
       Like -u, but match <filepattern> against files in the working tree in addition to the
       index. That means that it will find new files as well as staging modified content and
       removing files that are no longer in the working tree.

Perhatikan kata kritis: <filepattern>. Anda harus memberikan pola yang cocok, secara rekursif, sepanjang jalan ke bawah pohon Anda.


0
2017-10-11 12:46



Saya memiliki masalah serupa pada Windows di mana saya git add --all meninggalkan beberapa file yang tidak terlacak, masalahnya adalah bahwa ada beberapa file dengan casing berbeda 'test.php' dan 'Test.php' jadi git Track.php terlacak dan bukan versi huruf kecilnya.

Ini dapat membantu seseorang di masa depan dan menyimpan beberapa goresan kepala.


0
2018-03-05 09:06



Saya memiliki masalah ini beberapa hari terakhir dengan BitBucket. Saya sedang mengerjakan proyek yang sedang dilacak di repositori oleh Visual Studio 2013 Community Edition.

Namun saya telah menggunakan Git Bash pada kesempatan untuk secara manual melakukan commit dan saat itulah hal-hal mulai salah dan file hanya diabaikan. Mencoba untuk mengumpulkan repo tetapi ini tidak membantu.

Akhirnya saya menemukan bahwa jika Anda masuk ke Visual Studio> Team Explorer> klik pada Sync, Visual Studio akan melakukan tarik lalu berkomitmen dan mendorong file yang tidak terlacak.

Anda dapat melakukan hal yang sama secara manual melalui Git Bash jika Anda menyukai konsol seperti yang saya lakukan.

Semoga ini bisa membantu seseorang.


0
2018-05-20 14:40



Saya memiliki masalah ini karena saya mengkloning repositori orang lain ke dalam proyek saya. Ketika saya mengkloningnya, sudah ada folder dan gitignore .gitignore dari proyek mereka. Setelah menghapus file git yang sudah ada dan mulai lagi dengan git, itu berfungsi dengan baik.


0
2018-05-25 03:33



Kesalahan ini terjadi karena Anda telah menambahkan folder yang sudah dikaitkan dengan beberapa repositori github lainnya. Folder induk yang Anda gunakan terkait dengan beberapa repositori lainnya. Untuk mengatasi masalah ini, pertama-tama salin file yang ingin Anda unggah ke github dari folder BankAccount, lalu hapus folder BankAccount. Sekarang buat folder baru dan kemudian tempel file di dalamnya. Hal ini disebabkan oleh submodules git yang secara otomatis diambil oleh git yang ada di folder sebelumnya. Sekarang Anda bisa melakukannya

git add . 
git status

0
2017-10-28 08:52