Apa tepatnya .gitignore?

212

Saya baru saja membuat repositori Github dan bertanya-tanya untuk apa .gitignorefile itu. Saya mulai dengan tidak membuat satu, tetapi menambahkan satu karena fakta bahwa kebanyakan repositori memilikinya. Apakah saya perlu memilikinya? Bisakah saya mengabaikannya, atau menggunakannya? Saya melakukan penelitian pada subjek tetapi tidak dapat menemukan penjelasan konkret.

Zahachos
sumber

Jawaban:

175

.gitignorememberitahu git file (atau pola) mana yang harus diabaikannya. Ini biasanya digunakan untuk menghindari melakukan file sementara dari direktori kerja Anda yang tidak berguna bagi kolaborator lain, seperti produk kompilasi, file sementara yang dibuat oleh IDE, dll.

Anda dapat menemukan detail lengkapnya di sini .

Mureinik
sumber
Jadi, jika Anda membuat .gitignore di repositori baru di github.com, lalu lakukan git init dan git add . di komputer lokal Anda - belum terhubung ke .gitignore karena belum terhubung ke repositori itu - bagaimana cara kerjanya? Apakah itu berlaku ketika saya melakukan git commit? Atau?
Xonatron
apa yang _._gitignoredigunakan untuk? Apakah ini digunakan hanya ketika gitignore berada di sub Dir.?
Saikat Chakrabortty
Jadi tetap secara lokal, tetapi tidak didorong ke asal? Jadi jika beberapa pengguna mengunduh github repo, apakah file rahasia itu juga akan diunduh?
Temui Zaveri
Apa artinya mengabaikan ? Siapa / apa / kapan abaikan? Saya tahu apa arti kata abaikan tetapi saya tidak menemukan deskripsi yang jelas tentang apa arti abaikan dalam konteks Git. Jelas istilah ini benar-benar dapat dimengerti oleh orang-orang yang memahaminya tetapi apa pun yang ditulis untuk mendefinisikan sesuatu untuk orang yang belum tahu itu perlu menjelaskan semua istilah yang memiliki definisi yang unik untuk konteksnya.
user34660
1
@ user34660 Abaikan berarti hanya - Git tidak akan melacak perubahan pada file yang ditentukan oleh (pola) dalam .gitignorefile. Bahkan jika Anda mengubahnya, git tidak akan menampilkannya sebagai modifikasi.
Mureinik
42

Ini adalah daftar file yang ingin Anda abaikan di direktori kerja Anda.

Katakanlah Anda menggunakan Mac dan Anda memiliki file .DS_Store di semua direktori Anda. Anda ingin git mengabaikannya, jadi Anda menambahkan .DS_Store sebagai baris di .gitignore. Dan seterusnya.

Git docs akan memberi tahu Anda semua yang perlu Anda ketahui: http://git-scm.com/docs/gitignore

Andy Lester
sumber
2
.DS_StoreSkenario Anda akhirnya beresonansi dengan saya karena saya kira saya tidak memahami konsep ini karena saya belum perlu menggunakannya dalam proyek. Terima kasih. Saya akhirnya menggunakan ini sebagai titik awal karena saya menggunakan semua sistem operasi yang berbeda mencatat secara khusus # OS generated files #bagian ini.
phoenixlaef
2
Saya tahu saya terlambat ke utas ini, tapi terima kasih @AndyLester! Saya seorang pemula dalam hal pemrograman dan Github. Saya menemukan banyak jawaban yang ditulis untuk menjawab pertanyaan jenis ini diisi dengan istilah yang mungkin tidak dipahami oleh pemula (yaitu, kompilasi produk, file temporer yang dibuat oleh IDE .... apa h @ ll adalah hal-hal ini!). Namun, deskripsi Mac Anda sempurna dalam kesederhanaannya yang elegan!
Vesuccio
21

Ketika Anda melakukan komit, Anda tidak ingin secara tidak sengaja memasukkan file sementara atau membuat folder tertentu. Karenanya gunakan .gitignoredaftar item yang ingin Anda abaikan dari melakukan.

Juga, yang terpenting git status adalah salah satu perintah yang paling sering digunakan di mana Anda ingin git statusmembuat daftar file yang telah dimodifikasi.

Anda ingin git statusdaftar Anda terlihat bersih dari file yang tidak diinginkan. Sebagai contoh, saya mengubah a.cpp, b.cpp, c.cpp, d.cpp & e.cppsaya ingin git statusdaftar saya sebagai berikut:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

Saya tidak ingingit status mencantumkan file yang diubah seperti ini dengan file objek perantara & file dari folder build

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

Oleh karena itu, untuk membebaskan diri dari git statusdaftar file-file sementara antara & secara tidak sengaja memasukkannya ke dalam repo, saya harus membuat .gitignoreyang dilakukan semua orang. Yang perlu saya lakukan adalah mencantumkan file & folder .gitignoreyang ingin saya kecualikan dari melakukan.

Berikut ini adalah saya .gitignoreuntuk menghindari melakukan file yang tidak perlu

/*.cmake
/*.DS_Store
/.user
/build
programmer_of_the_galaxies
sumber
7

Ada file yang Anda tidak ingin Git lapor masuk. Git melihat setiap file dalam copy pekerjaan Anda sebagai salah satu dari tiga hal:

  1. dilacak - file yang sebelumnya telah dipentaskan atau dilakukan;
  2. tidak terlacak - file yang belum dipentaskan atau dilakukan; atau
  3. diabaikan - file yang secara eksplisit disuruh diabaikan oleh Git.

File yang diabaikan biasanya dibuat artefak dan file yang dihasilkan mesin yang dapat berasal dari sumber repositori Anda atau seharusnya tidak dilakukan. Beberapa contoh umum adalah:

  • cache ketergantungan, seperti konten /node_modulesatau/packages
  • kode dikompilasi, seperti .o, .pyc, dan .classfile
  • membangun output direktori, seperti /bin, /out, atau/target
  • file yang dihasilkan pada saat runtime, seperti .log, .lock, atau.tmp
  • file sistem tersembunyi, seperti .DS_StoreatauThumbs.db
  • file konfigurasi IDE pribadi, seperti .idea/workspace.xml

File yang diabaikan dilacak dalam file khusus bernama .gitignoreyang diperiksa di root repositori Anda. Tidak ada perintah abaikan git eksplisit: sebaliknya .gitignorefile harus diedit dan dilakukan dengan tangan ketika Anda memiliki file baru yang ingin Anda abaikan. .gitignorefile berisi pola yang cocok dengan nama file di repositori Anda untuk menentukan apakah mereka harus diabaikan atau tidak. Ini adalah contoh.gitignore file. Untuk lebih jelasnya lihat tautan ini

imk
sumber
5

Tujuan utama .gitignore - jadi Anda menghindari menambahkan file yang tidak relevan, dll. Git

Saya memiliki banyak catatan pribadi / coretan di repositori tertentu: mereka berguna bagi saya tetapi tidak untuk orang lain. Saya tidak ingin itu diunggah ke github karena itu hanya akan membingungkan semua orang yang membacanya. Yang bagus adalah saya bisa meminta git untuk "mengabaikan" file-file itu. Satu-satunya biaya untuk pendekatan ini adalah bahwa saya tidak akan dapat memulihkan catatan itu jika komputer saya crash dll.

BKSpurgeon
sumber