Apakah ada perintah abaikan untuk git seperti ada untuk svn?

125

Saya adalah pengguna baru gitdan saya memulai proyek baru. Saya memiliki banyak file dot yang ingin saya abaikan. Apakah ada perintah abaikan untuk gitseperti ada untuk svn?

Chris J
sumber
1
Alternatif yang baik untuk gitignore: indeks pembaruan git --assume-tidak berubah <file> , terima kasih kepada stackoverflow.com/a/16442091/2162226
Gene Bo

Jawaban:

136

Tidak ada git ignoreperintah khusus .

Edit .gitignorefile yang terletak di tempat yang sesuai dalam copy pekerjaan. Anda kemudian harus menambahkan ini .gitignoredan melakukannya. Setiap orang yang mengkloning repo akan mengabaikan file-file itu.

Perhatikan bahwa hanya nama file yang dimulai dengan yang /relatif terhadap direktori yang .gitignoreberada. Semua yang lain akan cocok dengan file dalam subdirektori apa pun.

Anda juga dapat mengedit .git/info/excludeuntuk mengabaikan file tertentu hanya dalam satu salinan yang berfungsi. The .git/info/excludeFile tidak akan dilakukan, dan dengan demikian hanya akan berlaku secara lokal di satu salinan kerja ini.

Anda juga dapat mengatur file global dengan pola untuk diabaikan git config --global core.excludesfile . Ini akan berlaku secara lokal untuk semua copy pekerjaan git pada akun pengguna yang sama.

Jalankan git help gitignoredan baca teks untuk detailnya.

ndim
sumber
75
Tidak memiliki perintah pengabaian yang sederhana sepertinya merupakan pengawasan dari tim git.
jcollum
4
@ jcollum Sepintas memang demikian, tetapi kesederhanaan aliasing perintah untuk menambahkan yang baru DAN kerumitan membuat satu dan bekerja melalui semua kasus tepi / gotchas / potensi masalah mengedit file teks juga masuk akal untuk menyerahkannya ke pengguna. Saya merasa bertentangan karena saya sama-sama setuju dan tidak setuju dengan Anda.
abelito
100

Perintah abaikan git yang sangat berguna hadir dengan tambahan tj / git- mengagumkan .

Berikut adalah beberapa contoh penggunaan:

Daftar semua pola yang saat ini diabaikan

git ignore

Tambahkan pola

git ignore "*.log"

Tambahkan salah satu templat dari gitignore.io

git ignore-io -a rails

git-extras menyediakan lebih banyak perintah yang berguna. Pasti layak dicoba.

Nicolai Fröhlich
sumber
1
Jadi jika saya menggunakan git abaikan "index.html" itu akan mengabaikan file ini?
JohnAndrews
Apakah perintah -t masih berlaku? Ketika saya menjalankannya, itu hanya menambahkan -t dan templat apa pun yang saya coba tambahkan ke file abaikan git
Bynho
50

Di Linux / Unix, Anda dapat menambahkan file ke file .gitignore dengan echoperintah. Misalnya jika Anda ingin mengabaikan semua .svnfolder, jalankan ini dari root proyek:

echo .svn/ >> .gitignore
pfrenssen
sumber
1
Saya menemukan tweet ini menggunakan sintaks twitter.com/noodl_io/status/669904872704253953
JohnAndrews
3
Di Git Bash pada Windows, saya perlu menambahkan /'dan' sebelumnya (untuk membuat baris baru), seperti echo /nbproject/project.properties\ >> .gitignoredan echo /nbproject/project.xml\ >> .gitignore.
Ryan
15

Anda memiliki dua cara untuk mengabaikan file:

  • .gitignoredalam folder apa pun akan mengabaikan file seperti yang ditentukan dalam file untuk folder itu. Menggunakan wildcard dimungkinkan.
  • .git/info/excludememegang pola abaikan global, mirip dengan global-ignoresfile konfigurasi dalam subversi.
bluebrother
sumber
6
Perhatikan bahwa pola dalam .gitignorefile yang tidak mengandung '/' dicocokkan secara rekursif (yaitu juga di semua subdirektori dari direktori .gitignorefile berada), bertentangan dengan kasus svn:ignoreproperti direktori di Subversion.
Jakub Narębski
6

Saya harap ini belum terlambat.

Jika Anda menggunakan Windows, Anda dapat melakukan yang berikut untuk membuat file .gitignore

echo name_of_the_file_you_want_to_ignore.extension > .gitignore

Untuk mengedit .gitignore, Anda dapat menjalankan

notepad .gitignore
Nesar
sumber
2
Jangan gunakan itu jika Anda sudah memiliki file .gitignore, itu akan menimpanya! Untuk menambahkan file yang diabaikan, gunakan ini: echo ign.ext >> .gitignore
TomEberhard
Anda benar, disarankan untuk menggunakan hanya jika file .gitignore tidak ada. Lebih baik menggunakan "notepad .gitignore", jika Anda memiliki file .gitignore itu akan membukanya, dan jika tidak, itu akan membuatnya, dan Anda kemudian dapat menambahkan semua file dari notepad. 1 file / folder per baris
Nesar
3

Buat file bernama .gitignore di root repositori Anda. Dalam file ini Anda meletakkan path relatif ke setiap file yang ingin Anda abaikan dalam satu baris. Anda dapat menggunakan *wildcard.

Bruno Reis
sumber
2

Dengan menggunakan jawaban yang telah disediakan, Anda dapat menggulung git ignoreperintah Anda sendiri menggunakan alias . Tambahkan ini ke file ~ / .gitconfig Anda:

ignore = !sh -c 'echo $1 >> .gitignore' -

Atau jalankan perintah ini dari shell (* nix) pilihan Anda:

git config --global alias.ignore '!sh -c "echo $1 >> .gitignore" -'

Anda juga dapat membuat git exclude perintah dengan mengganti ignoredengan excludedan .gitignoredengan .git/info/excludedi atas.

(Jika Anda belum memahami perbedaan antara kedua file ini setelah membaca jawaban di sini, lihat pertanyaan ini .)

daemonexmachina
sumber
1
Jawaban di sini meluas $ 1 dengan benar: stackoverflow.com/a/21884533/1465227
Archangel33
2

untuk nama yang tidak ada dalam copy atau repo yang berfungsi:

echo /globpattern >> .gitignore

atau untuk file yang ada (baris perintah tipe sh):

echo /$(ls -1 file) >> .gitignore   # I use tab completion to select the file to be ignored  
git rm -r --cached file             # if already checked in, deletes it on next commit
nrbray
sumber
1

Sangat berguna untuk mendefinisikan file .gitignore yang lengkap untuk proyek Anda. Hadiahnya adalah penggunaan aman kenyamanan --allatau -abendera untuk perintah seperti adddan commit.

Juga, pertimbangkan untuk mendefinisikan file global ~ / .gitignore untuk pola yang biasanya diabaikan seperti *~ , yang mencakup file sementara yang dibuat oleh Emacs.

seh
sumber
1

Anda harus menginstal git-ekstra untuk ini. Anda dapat menginstalnya di Ubuntu menggunakan apt-get,

$ sudo apt-get install git-extras

Kemudian Anda bisa menggunakan perintah abaikan abaikan.

$ git ignore file_name
Vidura Mudalige
sumber
3
Di Mac, jika Anda memiliki Homebrew terinstal, Anda dapat menjalankan brew install git-extras.
Alex Glover
0

Anda juga bisa menggunakan gitignore.io Joe Blau

Baik melalui antarmuka web https://www.gitignore.io/

Atau dengan menginstal alat CLI, ini sangat mudah, cukup ketik yang berikut di terminal Anda:

Linux:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bashrc && source ~/.bashrc

OSX:
echo "function gi() { curl -L -s https://www.gitignore.io/api/\$@ ;}" >> ~/.bash_profile && source ~/.bash_profile

Dan kemudian Anda bisa mengetik gifollowd dengan semua elemen platform / lingkungan yang Anda butuhkan untuk kriteria gitignore.

Contoh!
Katakanlah Anda sedang mengerjakan proyek simpul yang menyertakan grunt dan Anda menggunakan webstorm di linux, maka Anda mungkin ingin mengetik:
gi linux,webstorm,node,grunt > .gitignore(untuk membuat file baru)
atau
gi linux,webstorm,node,grunt >> .gitignore (untuk menambahkan / menambahkan aturan baru ke file yang sudah ada )

bam, kamu baik-baik saja

JorgeArtware
sumber