Saya melakukan git commit -m "message"
seperti ini:
> git commit -m "save arezzo files"
# 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)
#
# modified: arezzo.txt
# modified: arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")
Tetapi setelah itu, ketika saya melakukan git status
itu menunjukkan file yang dimodifikasi yang sama:
> 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)
#
# modified: arezzo.txt
# modified: arezzo.jsp
#
no changes added to commit (use "git add" and/or "git commit -a")
Apa yang saya lakukan salah?
git
version-control
git-commit
arezzo
sumber
sumber
git commit -am "save arezzo files"
untuk secara otomatis menambahkan semua perubahan (wrt. Gitignore). Anda mungkin ingin menambahkan hanya file / dir tertentu:git add file.src
Jawaban:
Seperti yang dikatakan dalam pesan:
Git memiliki "area pementasan" di mana file perlu ditambahkan sebelum dikomit, Anda dapat membaca penjelasannya di sini .
Untuk contoh spesifik Anda, Anda dapat menggunakan:
(perhatikan tambahan
a
di bendera, dapat juga ditulis sebagaigit commit -a -m "message"
- keduanya melakukan hal yang sama)Atau, jika Anda ingin lebih selektif tentang apa yang Anda tambahkan ke komit, Anda menggunakan perintah git add untuk menambahkan file yang sesuai ke area pementasan, dan status git untuk melihat pratinjau apa yang akan ditambahkan (mengingat untuk memperhatikan kata-kata yang digunakan).
Anda juga dapat menemukan dokumentasi umum dan tutorial tentang cara menggunakan git pada halaman dokumentasi git yang akan memberikan detail lebih lanjut tentang konsep staging / menambahkan file.
Satu hal lain yang perlu diketahui adalah pementasan interaktif - ini memungkinkan Anda untuk menambahkan bagian dari file ke area pementasan, jadi jika Anda telah membuat tiga perubahan kode yang berbeda (untuk fungsi terkait tetapi berbeda), Anda dapat menggunakan mode interaktif untuk membagi perubahan dan tambahkan / komit setiap bagian secara bergantian. Memiliki komitmen spesifik yang lebih kecil seperti ini dapat membantu.
sumber
Anda tidak menambahkan perubahan. Baik secara khusus menambahkannya melalui
atau tambahkan semua perubahan (dari jalur root proyek)
atau gunakan steno
-a
saat melakukan:sumber
Kamu seharusnya melakukan:
sumber
Saya menyalin sub proyek kecil yang saya miliki yang berada di bawah kendali sumber Git ke proyek lain dan lupa menghapus folder .git. Ketika saya pergi untuk mengkomit saya mendapat pesan yang sama seperti di atas dan tidak bisa menghapusnya sampai saya menghapus
.git
folder.Agak konyol, tetapi perlu memeriksa Anda tidak memiliki folder .git di bawah folder yang tidak melakukan.
sumber
Anda bisa melakukan:
Untuk memeriksa file mana yang Anda modifikasi dan akan ditambahkan (dry run: -n option), lalu
Untuk menambahkan file yang baru saja dimodifikasi
sumber
Saya menemukan masalah ini muncul ketika saya telah melakukan
git add .
dalam subdirektori di bawah di mana.gitignore
file saya tinggal (direktori home repositori saya, jadi untuk berbicara). Coba ubah direktori ke direktori teratas Anda dan jalankangit add .
diikuti olehgit commit -m "my commit message"
.sumber
Mungkin hal yang jelas, tapi ...
Jika Anda memiliki masalah dengan indeks, gunakan git-gui . Anda mendapatkan pandangan yang sangat bagus tentang bagaimana indeks (area pementasan) bekerja.
Sumber informasi lain yang membantu saya memahami indeks adalah Scott Chacons "Getting Git" halaman 259 dan selanjutnya.
Saya mulai menggunakan baris perintah karena sebagian besar dokumentasi hanya menunjukkan bahwa ...
Saya pikir git-gui dan gitk benar-benar membuat saya bekerja lebih cepat, dan saya menyingkirkan kebiasaan buruk seperti "git pull" misalnya ... Sekarang saya selalu mengambil pertama ... Lihat apa perubahan baru sebenarnya sebelum saya bergabung.
sumber
Alasan mengapa hal ini terjadi adalah karena Anda memiliki folder yang sudah dilacak oleh Git di dalam folder lain yang juga dilacak oleh Git. Misalnya, saya punya proyek dan saya menambahkan subfolder ke dalamnya. Keduanya dilacak oleh Git sebelum saya memasukkan satu di dalam yang lain. Untuk menghentikan pelacakan yang ada di dalamnya, temukan dan hapus file Git dengan:
Dalam kasus saya, saya memiliki aplikasi WordPress dan folder yang saya tambahkan di dalamnya adalah sebuah tema. Jadi saya harus pergi ke root tema, dan menghapus file Git, sehingga seluruh proyek sekarang akan dilacak oleh orang tua, aplikasi WordPress.
sumber
jika Anda memiliki lebih banyak file dalam kasus saya, saya memiliki 7000 file gambar ketika saya mencoba untuk menambahkannya dari folder rute proyek itu belum menambahkan mereka tetapi ketika saya pergi ke folder gambar semuanya ok. Pergi melalui folder target dan perintah seperti di bawah ini
sumber
Saya memiliki masalah di mana saya lakukan
commit --amend
bahkan setelah mengeluarkangit add .
dan itu masih tidak berhasil. Ternyata saya membuat beberapa.vimrc
penyesuaian dan editor saya tidak berfungsi dengan benar. Memperbaiki kesalahan ini sehinggavim
mengembalikan kode yang benar menyelesaikan masalah.sumber
Saya memiliki masalah yang sangat mirip dengan pesan kesalahan yang sama. "Perubahan tidak diatur untuk komit", namun ketika saya melakukan diff itu menunjukkan perbedaan. Saya akhirnya menemukan bahwa beberapa waktu yang lalu saya telah mengubah kasus direktori. ex. "PostgeSQL" ke "postgresql". Seperti yang saya ingat sekarang kadang-kadang git akan meninggalkan satu atau dua file di belakang dalam direktori case lama. Kemudian Anda akan mengkomit versi baru ke case baru.
Jadi git tidak tahu yang harus diandalkan. Jadi untuk menyelesaikannya, saya harus pergi ke situs web github. Maka Anda dapat melihat kedua kasus. Dan Anda harus menghapus semua file dalam direktori cased yang salah. Pastikan Anda menyimpan versi yang benar atau dalam direktori kase yang benar.
Setelah Anda menghapus semua file di direktori kasus lama, seluruh direktori itu akan hilang. Kemudian lakukan komit.
Pada titik ini Anda harus dapat melakukan Tarik pada komputer lokal Anda dan tidak melihat konflik lagi. Dengan demikian bisa berkomitmen lagi. :)
sumber
jika Anda memiliki subfolder, yang dikloning dari git-Repository lain, pertama Anda harus menghapus file $ .git $ dari child-Repository:
rm -rf .git
setelah itu Anda dapat mengubah ke folder induk dan menggunakangit add -A
.sumber