mengapa kamu ingin melakukan itu? cukup lakukan perubahan Anda. .gitignoreseharusnya menjadi bagian dari repositori Anda, mencantumkan pola file yang merupakan sampah untuk proyek.
KurzedMetal
1
.gitignoreharus menjadi bagian dari repositori Anda, sehingga semua orang di tim Anda mengabaikan atau memeriksa file yang sama. Hanya karena .gitignoreada di folder kode Anda di suatu tempat tidak berarti Anda harus menggunakannya.
Anda dapat menggunakan git rm --cached .gitignoredan menghapus .gitignore
hassanzadeh.sd
Jawaban:
170
Tujuan .gitignorefile adalah untuk mencegah semua orang yang berkolaborasi pada suatu proyek dari melakukan secara tidak sengaja beberapa file umum dalam suatu proyek, seperti file cache yang dihasilkan. Oleh karena itu Anda tidak boleh mengabaikan .gitignore, karena itu seharusnya dimasukkan dalam repositori.
Jika Anda ingin mengabaikan file hanya dalam satu repositori tetapi ingin menghindari melakukan daftar abaikan (misalnya untuk file pribadi) Anda dapat menambahkannya ke .git/info/excludedalam repositori itu.
Jika Anda ingin mengabaikan file tertentu di setiap repositori di mesin Anda, Anda dapat membuat file ~/.gitignore_globaldan kemudian jalankan
.Gitignore dapat mengabaikan dirinya sendiri jika belum pernah masuk:
mhaase@ubuntu:~$ git --version
git version 1.7.9.5
mhaase@ubuntu:~$ git init temp
Initialized empty Git repository in /home/mhaase/temp/.git/
mhaase@ubuntu:~$ cd temp
mhaase@ubuntu:~/temp$ touch .gitignore foo bar baz bat
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# bar
# bat
# baz
# foo
mhaase@ubuntu:~/temp$ echo "foo" >> .gitignore
mhaase@ubuntu:~/temp$ echo ".gitignore" >> .gitignore
mhaase@ubuntu:~/temp$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# bar
# bat
# baz
nothing added to commit but untracked files present (use "git add" to track)
Jika Anda check in .gitignore (sebelum Anda mengatakannya untuk mengabaikannya sendiri), maka itu akan selalu muncul dalam status git, bahkan jika Anda kemudian mengubahnya untuk mengabaikannya sendiri.
Tepat, ini kasus saya. Saya ingin memiliki lokal .gitignoreuntuk bekerja dengan git-svn, yang seharusnya tidak ada yang melihat. Jadi saya hanya menambahkannya ke dirinya sendiri dan itu berhasil. Tetapi kemudian saya mencari di Google untuk melihat apakah beberapa orang yang tegang akan menjelaskan kepada orang lain bagaimana ini "buruk". Jawaban ini harus diterima, dan kemudian saya akan membatalkan .git/info/excludesaran juga. Jadi itu hanya perlu dilacak ... Tidak terlalu mengejutkan, setidaknya jika Anda pernah "subverted" (svn).
Tomasz Gandor
Saya punya .gitignorefile mendapat cadangan terlebih dahulu. Lalu saya menggunakan git rm .gitignoredan melakukan perubahan itu. Akhirnya, tambahkan dan komit .gitignorefile lagi dengan aturan untuk .gitignore. Berhasil!
qzhang
4
Untuk memperbaiki ini, Anda dapat menjalankan git rm --cached .gitignore.
Gideon
19
Sebenarnya tidak ada alasan bagus untuk melakukan ini. Jika Anda ingin file diabaikan hanya untuk klon Anda , tambahkan ke .git/info/exclude, bukan di .gitignorefile.
saya mendapatkan "Tidak dapat menyelesaikan operasi karena ada perubahan pada file berikut" dan file itu mencantumkannya yang saya miliki di kecualikan. Ada yang tahu kenapa?
Paul McCarthy
3
Setelah Anda memasukkan .gitignorefile gitignore Anda, coba yang berikut ini,
Seharusnya berfungsi meskipun seperti yang sudah dikatakan, mengabaikan gitignore dapat menjadi kontra-produktif jika repo Anda dibagikan oleh banyak pengguna.
Ya kamu bisa; Anda masih melihatnya di file yang diedit karena masih dilacak oleh git, dan file yang dilacak oleh git selalu ditandai sebagai dimodifikasi walaupun mereka ada di .gitignore. Jadi lepaskan saja.
Tetapi mengapa tidak melakukan atau mengatur ulang perubahan yang Anda miliki di sana? Ini adalah cara yang jauh lebih baik untuk menghapusnya dari status ... Perlu diketahui juga bahwa setiap klon baru dari repo Anda harus menambahkannya .gitignore, yang dapat mengganggu.
Ya, dan Anda mungkin harus menghapusnya secara terpisah dari git got rm --cached .gitignore, mungkin.
Tadeck
git rm --cached .gitignore sedang menghapus dari git. Itu destruktif dan tidak diinginkan. Bagaimana caranya agar .gitignore diabaikan untuk klon lokal?
javadba
0
Anda dapat mencapai ini dengan menulis ini ke file .gitignore Anda. The *akan menambahkan segala sesuatu untuk mengabaikan daftar dan kemudian !.gitignoreakan menghapus file gitignore dari daftar abaikan.
Ya benar, saya sudah menyebutkan hal yang sama. *akan mengabaikan segalanya. Termasuk .gitignorefile.
Ankit Singh
1
Maksudku, OP sedang mencoba untuk menghapus para .gitignorefile dari basis kode (dengan menambahkannya ke itu sendiri, yang tidak benar-benar masuk akal, tapi siapa aku untuk hakim). Di sini saya dapat melihat saran yang memastikan bahwa file tidak pernah diabaikan, yang pada gilirannya berarti ada di ( ditambahkan ke) basis kode
Dmitry Parzhitsky
Itu benar. Pertanyaan itu sendiri tampak bengkok. Tapi baiklah.
.gitignore
seharusnya menjadi bagian dari repositori Anda, mencantumkan pola file yang merupakan sampah untuk proyek..gitignore
harus menjadi bagian dari repositori Anda, sehingga semua orang di tim Anda mengabaikan atau memeriksa file yang sama. Hanya karena.gitignore
ada di folder kode Anda di suatu tempat tidak berarti Anda harus menggunakannya.git rm --cached .gitignore
dan menghapus .gitignoreJawaban:
Tujuan
.gitignore
file adalah untuk mencegah semua orang yang berkolaborasi pada suatu proyek dari melakukan secara tidak sengaja beberapa file umum dalam suatu proyek, seperti file cache yang dihasilkan. Oleh karena itu Anda tidak boleh mengabaikan.gitignore
, karena itu seharusnya dimasukkan dalam repositori.Jika Anda ingin mengabaikan file hanya dalam satu repositori tetapi ingin menghindari melakukan daftar abaikan (misalnya untuk file pribadi) Anda dapat menambahkannya ke
.git/info/exclude
dalam repositori itu.Jika Anda ingin mengabaikan file tertentu di setiap repositori di mesin Anda, Anda dapat membuat file
~/.gitignore_global
dan kemudian jalankansumber
.Gitignore dapat mengabaikan dirinya sendiri jika belum pernah masuk:
Jika Anda check in .gitignore (sebelum Anda mengatakannya untuk mengabaikannya sendiri), maka itu akan selalu muncul dalam status git, bahkan jika Anda kemudian mengubahnya untuk mengabaikannya sendiri.
sumber
.gitignore
untuk bekerja dengangit-svn
, yang seharusnya tidak ada yang melihat. Jadi saya hanya menambahkannya ke dirinya sendiri dan itu berhasil. Tetapi kemudian saya mencari di Google untuk melihat apakah beberapa orang yang tegang akan menjelaskan kepada orang lain bagaimana ini "buruk". Jawaban ini harus diterima, dan kemudian saya akan membatalkan.git/info/exclude
saran juga. Jadi itu hanya perlu dilacak ... Tidak terlalu mengejutkan, setidaknya jika Anda pernah "subverted" (svn)..gitignore
file mendapat cadangan terlebih dahulu. Lalu saya menggunakangit rm .gitignore
dan melakukan perubahan itu. Akhirnya, tambahkan dan komit.gitignore
file lagi dengan aturan untuk.gitignore
. Berhasil!git rm --cached .gitignore
.Sebenarnya tidak ada alasan bagus untuk melakukan ini. Jika Anda ingin file diabaikan hanya untuk klon Anda , tambahkan ke
.git/info/exclude
, bukan di.gitignore
file.sumber
Setelah Anda memasukkan
.gitignore
file gitignore Anda, coba yang berikut ini,Seharusnya berfungsi meskipun seperti yang sudah dikatakan, mengabaikan gitignore dapat menjadi kontra-produktif jika repo Anda dibagikan oleh banyak pengguna.
sumber
Ya kamu bisa; Anda masih melihatnya di file yang diedit karena masih dilacak oleh git, dan file yang dilacak oleh git selalu ditandai sebagai dimodifikasi walaupun mereka ada di .gitignore. Jadi lepaskan saja.
Tetapi mengapa tidak melakukan atau mengatur ulang perubahan yang Anda miliki di sana? Ini adalah cara yang jauh lebih baik untuk menghapusnya dari status ... Perlu diketahui juga bahwa setiap klon baru dari repo Anda harus menambahkannya
.gitignore
, yang dapat mengganggu.sumber
got rm --cached .gitignore
, mungkin.Anda dapat mencapai ini dengan menulis ini ke file .gitignore Anda. The
*
akan menambahkan segala sesuatu untuk mengabaikan daftar dan kemudian!.gitignore
akan menghapus file gitignore dari daftar abaikan.sumber
*
akan mengabaikan segalanya. Termasuk.gitignore
file..gitignore
file dari basis kode (dengan menambahkannya ke itu sendiri, yang tidak benar-benar masuk akal, tapi siapa aku untuk hakim). Di sini saya dapat melihat saran yang memastikan bahwa file tidak pernah diabaikan, yang pada gilirannya berarti ada di ( ditambahkan ke) basis kode