Saya baru saja melakukan git init
pada root proyek baru saya.
Lalu saya membuat .gitignore
file.
Sekarang, ketika saya mengetik git status
, file .gitignore muncul di daftar file yang tidak dilacak . Mengapa demikian?
git
version-control
dvcs
gitignore
Jacques René Mesrine
sumber
sumber
git add self && git commit -m "-1 for reverting existential depression" && git remote rm HEAD
how to gitignore .gitinore file
dan pertanyaan serta jawaban yang diterima tidak benar-benar terkait dengan judul. Judul bisa ditingkatkan.Jawaban:
The
.gitignore
file harus dalam repositori Anda, sehingga memang harus ditambahkan dan berkomitmen dalam, sebagaigit status
menyarankan. Itu harus menjadi bagian dari pohon repositori, sehingga perubahan itu bisa digabungkan dan seterusnya.Jadi, tambahkan ke repositori Anda, itu tidak boleh gitignored.
Jika Anda benar-benar mau, Anda dapat menambahkan
.gitignore
ke.gitignore
file jika Anda tidak ingin itu dilakukan. Namun, dalam hal ini mungkin lebih baik untuk menambahkan diabaikan.git/info/exclude
, file checkout-lokal khusus yang berfungsi seperti .gitignore tetapi tidak muncul dalam "status git" karena ada di.git
folder.Lihat juga https://help.github.com/articles/ignoring-files
sumber
Jika Anda ingin menyimpan daftar file yang diabaikan di luar pohon Git Anda, Anda dapat menggunakan file .git / info / exclude . Ini diterapkan hanya untuk checkout Anda dari repo.
sumber
~/.gitignore
sehingga mereka diabaikan untuk repositori yang saya kerjakan.git update-index --assume-unchanged <file>
untuk menghentikan pelacakan perubahan tanpa mengubah repo Anda. Ini sangat berguna pada proyek bersama besar di mana Anda perlu melakukan perubahan lokal, tetapi tidak ada orang lain yang ingin melihat barang-barang Anda berkomitmen untuk repo. Lihat blog.pagebakers.nlAnda benar-benar bisa memasukkan garis
.gitignore
ke dalam.gitignore
file . Ini akan menyebabkan.gitignore
file diabaikan oleh git. Saya sebenarnya tidak berpikir ini adalah ide yang bagus. Saya pikir file abaikan harus dikendalikan dan dilacak versi. Saya hanya menempatkan ini di luar sana untuk kelengkapan.sumber
git rm --cached .gitignore
Anda juga dapat memiliki
.gitignore
file git pengguna global yang akan diterapkan secara otomatis ke semua repo Anda. Ini berguna untuk file IDE dan editor (mis.swp
Dan*~
file untuk Vim). Ubah lokasi direktori yang sesuai dengan OS Anda.Tambahkan ke
~/.gitconfig
file Anda :Buat
~/.gitignore
file dengan pola file untuk diabaikan.Simpan file dot Anda di repo lain sehingga Anda memiliki cadangan (opsional).
Setiap kali Anda menyalin, init atau mengkloning repo, file global gitignore Anda akan digunakan juga.
sumber
Jika seseorang telah menambahkan
.gitignore
ke repo Anda, tetapi Anda ingin membuat beberapa perubahan padanya dan membiarkan perubahan itu diabaikan lakukan hal berikut:git update-index --assume-unchanged .gitignore
Sumber .
sumber
.git/info/excludes
ada.--assume-unchanged
ada juga. Mengapa yang satu lebih baik dari yang lain?.git/info/excludes
tidak berfungsi jika file sudah dilacak.Setelah Anda menambahkan
.gitignore
file dan mengkomitnya, itu tidak akan lagi muncul di daftar "file tidak terpantau".sumber
Hanya memetikan orang lain memiliki rasa sakit yang sama yang kita miliki. Kami ingin mengecualikan file yang sudah dilakukan.
Posting ini jauh lebih bermanfaat: bekerja dengan .git / info / kecualikan terlambat
Khususnya apa yang Anda perlukan untuk mengabaikan file sebenarnya menggunakan perintah git remove Lihat git rm ( http://www.kernel.org/pub/software/scm/git/docs/git-rm.html )
Anda mengujinya dengan pergi
git rm --dry-run *.log
(jika Anda mengatakan ingin mengecualikan semua file log)
ini akan menampilkan apa yang akan dikecualikan jika Anda menjalankannya.
kemudian
Anda menjalankannya dengan pergi
git rm *.log
(atau jalur nama file / ekspresi apa pun yang Anda inginkan)
Kemudian tambahkan
*.log
baris ke.gitignore
file Anda .sumber
git status
jika mereka muncul di masa depan.Tentu saja file .gitignore muncul di status, karena tidak terpantau, dan git melihatnya sebagai file baru yang enak untuk dimakan!
Karena .gitignore adalah file yang tidak bisa dilacak, itu adalah kandidat untuk diabaikan oleh git ketika Anda memasukkannya ke dalam .gitignore!
Jadi, jawabannya sederhana: cukup tambahkan baris:
ke file .gitignore Anda!
Dan, bertentangan dengan respons August, saya harus mengatakan bahwa itu bukan file .gitignore yang seharusnya ada di repositori Anda. Kebetulan bisa , yang sering nyaman. Dan mungkin benar bahwa inilah alasan .gitignore dibuat sebagai alternatif .git / info / exclude, yang tidak memiliki opsi untuk dilacak oleh repositori. Bagaimanapun, bagaimana Anda menggunakan file .gitignore Anda sepenuhnya terserah Anda.
Untuk referensi, lihat manual gitignore (5) di kernel.org.
sumber
Idenya adalah untuk meletakkan file yang khusus untuk proyek Anda ke dalam
.gitignore
file dan (seperti yang telah disebutkan) menambahkannya ke repositori Sebagai contoh.pyc
dan.o
file, log yang dibuat testuite, beberapa perlengkapan dll.Untuk file yang dibuat oleh pengaturan Anda sendiri tetapi yang belum tentu muncul untuk setiap pengguna (seperti
.swp
file jika Anda menggunakan vim, direktori ecplise tersembunyi dan sejenisnya), Anda harus menggunakan.git/info/exclude
(sebagaimana telah disebutkan).sumber
Pertama-tama, seperti yang sudah dikatakan banyak orang, Anda
.gitignore
harus dilacak oleh Git (dan karenanya tidak boleh diabaikan). Biarkan saya jelaskan alasannya.(TL; DR: komit
.gitignore
file, dan gunakan global.gitignore
untuk mengabaikan file yang dibuat oleh IDE atau sistem operasi Anda)Git, seperti yang mungkin sudah Anda ketahui, sistem kontrol versi terdistribusi . Ini berarti memungkinkan Anda untuk beralih antara versi yang berbeda (bahkan jika pengembangan telah menyimpang ke cabang yang berbeda) dan juga memungkinkan beberapa pengembang untuk bekerja pada proyek yang sama.
Meskipun pelacakan Anda
.gitignore
juga memiliki manfaat ketika Anda beralih di antara snapshot, alasan paling penting untuk melakukannya adalah Anda ingin berbagi file dengan pengembang lain yang bekerja pada proyek yang sama. Dengan mengkomit file ke Git, kontributor lain akan secara otomatis mendapatkan.gitignore
file ketika mereka mengkloning repositori, sehingga mereka tidak perlu khawatir tentang secara tidak sengaja melakukan file yang tidak boleh dilakukan (seperti file log, direktori cache, kredensial database , dll.). Dan jika suatu saat proyek.gitignore
diperbarui, mereka dapat dengan mudah melakukan perubahan itu daripada harus mengedit file secara manual.Tentu saja, akan ada beberapa file dan folder yang ingin Anda abaikan, tetapi itu khusus untuk Anda, dan tidak berlaku untuk pengembang lain. Namun, itu tidak boleh di proyek
.gitignore
. Ada dua tempat lain di mana Anda dapat mengabaikan file dan folder:.gitignore
. Keuntungannya adalah ini.gitignore
diterapkan ke semua repositori di komputer Anda, jadi Anda tidak perlu mengulang ini untuk setiap repositori. Dan itu tidak dibagikan dengan pengembang lain, karena mereka mungkin menggunakan sistem operasi dan / atau IDE yang berbeda..gitignore
, atau global.gitignore
, dapat diabaikan dengan menggunakan repositori eksplisit tidak termasuk dalamyour_project_directory/.git/info/exclude
. File ini tidak akan dibagikan dengan pengembang lain, dan khusus untuk repositori tunggal itusumber
.gitignore
.gitignore
hanya berfungsi untuk mengabaikan file yang belum dilacak oleh Git. Menambahkan file yang sudah dilacak ke.gitignore
tidak akan mencegah Anda melakukan perubahan pada file itu. Bahkan jika ini mungkin, bagaimana Anda akan melakukan perubahan.gitignore
ketika itu memerintahkan Git untuk mengabaikannya sendiri?Perhatikan "masalah" berikut ini. Terkadang Anda ingin menambahkan direktori tetapi tidak ada file di dalam direktori tersebut. Solusi sederhana adalah membuat .gitignore dengan konten berikut:
Ini berfungsi dengan baik sampai Anda menyadari bahwa direktori tidak ditambahkan (seperti yang diharapkan ke repositori Anda. Alasannya adalah bahwa .gitignore juga akan diabaikan, dan dengan demikian direktori tersebut kosong. Dengan demikian, Anda harus melakukan sesuatu seperti ini :
sumber
Tampaknya ini hanya berfungsi untuk direktori Anda saat ini
Git
untuk mengabaikan semua file dari repositori.perbarui file ini
dengan kartu liar atau nama file Anda
sumber
Jika Anda sudah check-in .gitignore dan Anda ingin mengabaikan modifikasi untuk itu, lihat jawaban ini :
sumber
Dalam kasus saya, saya ingin mengecualikan file yang ada. Hanya memodifikasi .gitignore tidak berfungsi. Saya mengikuti langkah-langkah ini:
Dengan cara ini, saya membersihkan dari cache file yang ingin saya kecualikan dan setelah saya menambahkannya ke .gitignore .
sumber
Arahkan ke direktori dasar git repo Anda dan jalankan perintah berikut:
Semua file dot akan diabaikan, termasuk .DS_Store sial itu jika Anda menggunakan mac.
sumber
Sangat mungkin bahwa pengguna akhir ingin agar Git mengabaikan file ".gitignore" hanya karena folder spesifik IDE yang dibuat oleh Eclipse mungkin tidak sama dengan NetBeans atau IDE lain. Jadi untuk menjaga kode sumber IDE antagonis itu membuat hidup mudah untuk memiliki custom git diabaikan yang tidak dibagikan dengan seluruh tim karena pengembang individu mungkin menggunakan IDE yang berbeda.
sumber
.gitignore
adalah tentang mengabaikan file lain . git adalah tentang file, jadi ini tentang mengabaikan file. Namun ketika git bekerja dari file, file ini harus ada sebagai mekanisme untuk daftar nama file lainnya.Jika itu disebut
.the_list_of_ignored_files
mungkin sedikit lebih jelas.Analogi adalah daftar item yang harus dilakukan yang TIDAK ingin Anda lakukan. Kecuali jika Anda membuat daftar di suatu tempat adalah semacam daftar 'yang harus dilakukan' Anda tidak akan tahu tentang mereka.
sumber
Saya pikir ada beberapa situasi di mana mengabaikan .gitignore sangat berguna. Misalnya, ketika Anda memiliki beberapa tim atau tim besar yang bekerja pada basis kode yang sama. Dalam hal ini, Anda perlu memiliki konvensi tertentu, salah satu konvensi tersebut adalah mengenai apa yang diabaikan di git repo. Biasanya tentang mengabaikan file dan direktori yang dibuat oleh IDE atau OS, beberapa log yang dihasilkan, dll.
Namun, ada kekuatan yang cenderung memperkenalkan perubahan non-konvensional ke
.gitignore
file. Itu.gitignore
file dapat lebih diubah oleh orang yang tidak bertanggung jawab, karena kesalahan, dengan alat yang digunakan, atau dalam beberapa kasus lainnya.Untuk memiliki kekuatan balasan untuk ini, kita dapat melakukan hal berikut:
.gitignore
File tersebut " disegel " dengan cara ini.File " disegel "
.gitignore
dapat diubah, hanya secara lokal, tanpa menyebarkan perubahan itu kepada anggota tim lain. Namun, jika suatu perubahan disetujui secara luas di seluruh tim (s) daripada yang mungkin untuk "membuka segel" itu, mengubahnya dan dari "segel" itu lagi. Itu tidak bisa dilakukan secara tidak sengaja, hanya dengan sengaja.Sayangnya, Anda tidak dapat 100% terlindungi dari kebodohan, tetapi dengan cara ini Anda telah melakukan semua yang Anda bisa untuk mencegah hal-hal bodoh terjadi.
Jika Anda memiliki tim yang relatif kecil dengan profesional yang sangat baik, daripada ini tidak akan penting, tetapi bahkan orang-orang itu akan menghargai memiliki satu hal yang kurang perlu dikhawatirkan.
Menggunakan
.git/info/exclude
itu keren ketika Anda tidak dapat melakukan apa pun tentang pengaturan infrastruktur, hanya menutupi ** Anda sendiri untuk tidak membuat kesalahan.Dari sudut pandang apa yang benar dan apa yang salah, saya memilih untuk memiliki .gitignore masuk ke dalam
.gitignore
file, memberikan semua orang kebebasan untuk melakukan secara lokal apa pun yang mereka inginkan, tetapi tidak menyerang orang lain.sumber
Saya menemukan bahwa tempat terbaik untuk mengatur pengabaian terhadap
.DS_Store
file sial adalah dalam.git/info/exclude
file.IntelliJ tampaknya melakukan ini secara otomatis ketika Anda mengatur repositori git di dalamnya.
sumber