Git adalah sistem kontrol versi yang populer. Dengan adanya git pengembang dapat berkolaborasi dan bekerja sama dalam proyek. Git memungkinkan Anda untuk melacak perubahan yang Anda buat pada proyek Anda dari waktu ke waktu. Selain itu, ini memungkinkan Anda kembali ke versi sebelumnya jika ingin membatalkan perubahan.
Cara kerja Git adalah Anda mengatur file dalam sebuah proyek dengan perintah git add dan kemudian mengkomitnya dengan perintah git commit.
Saat mengerjakan proyek sebagai bagian dari tim, akan ada saatnya Anda tidak ingin berbagi beberapa file atau bagian proyek dengan orang lain. Dengan kata lain, Anda tidak ingin menyertakan atau mengkomit file spesifik tersebut ke versi utama proyek.
Dengan perintah git add karena ini menambahkan setiap file di direktori Git saat ini. Saat Anda menggunakan perintah git commit, setiap file akan dikomit. Ini juga termasuk file yang mungkin tidak ingin Anda bagikan. Jadi, bagaimana Anda memberi tahu Git untuk mengabaikan dan tidak melacak file tertentu? Yaitu dengan menggunakan file .gitignore.
Oleh karena itu, pada artikel ini Anda akan mempelajari apa itu file .gitignore, cara membuatnya, dan cara menggunakannya untuk mengabaikan file dan folder. Anda juga akan melihat bagaimana Anda dapat mengabaikan file yang dikomit sebelumnya.
Apa itu File .gitignore? Untuk Apa File .gitignore Digunakan?
Setiap file dalam repositori Git yang berfungsi saat ini adalah:
tracked – ini semua adalah file atau direktori yang diketahui Git. Ini adalah file dan direktori yang baru ditambahkan dengan git add dan dikomit dengan git commit ke repo utama.
untracked – ini adalah file atau direktori baru yang dibuat di direktori kerja tetapi belum ditambahkan menggunakan perintah git add.
ignored – ini adalah file atau direktori yang tidak terlacak harus tetap tidak terlacak dan tidak pernah dikomit. Semua file yang diabaikan disimpan dalam file .gitignore.
File .gitignore adalah file teks biasa yang berisi daftar semua file dan folder yang ditentukan dari proyek yang harus diabaikan dan tidak dilacak oleh Git. Di dalam .gitignore, Anda dapat memberi tahu Git untuk mengabaikan hanya satu file atau satu folder dengan menyebutkan nama atau pola dari file atau folder tertentu itu. Anda juga dapat memberi tahu Git untuk mengabaikan banyak file atau folder menggunakan metode yang sama.
Cara Membuat File .gitignore
Biasanya, file .gitignore ditempatkan di direktori root repositori. Direktori root juga dikenal sebagai induk dan direktori kerja saat ini. Folder root berisi semua file dan folder lain yang menyusun proyek. Yang mengatakan, Anda dapat menempatkannya di folder mana pun di repositori. Anda bahkan dapat memiliki banyak file .gitignore.
Untuk membuat file .gitignore di sistem berbasis Unix seperti macOS atau Linux menggunakan baris perintah, buka aplikasi terminal (seperti Terminal.app di macOS). Kemudian, arahkan ke folder root yang berisi proyek menggunakan perintah cd dan masukkan perintah berikut untuk membuat file .gitignore untuk direktori Anda:
touch .gitignore
File dengan titik (.) sebelum namanya disembunyikan secara default. File tersembunyi tidak terlihat saat menggunakan perintah ls saja. Untuk melihat semua file (termasuk yang tersembunyi) dari baris perintah, gunakan flag -a dengan perintah ls seperti ini:
ls -a
Apa yang Harus Disertakan dalam File .gitignore
Jenis file yang harus Anda pertimbangkan untuk ditambahkan ke file .gitignore adalah file apa pun yang tidak perlu dikomit. Anda mungkin tidak ingin menerapkannya untuk alasan keamanan atau karena bersifat lokal bagi Anda dan karena itu tidak perlu bagi pengembang lain yang mengerjakan proyek yang sama dengan Anda. Beberapa di antaranya mungkin termasuk:
- File Sistem Operasi. Setiap Sistem Operasi (seperti macOS, Windows, dan Linux) menghasilkan file tersembunyi khusus sistem yang tidak perlu digunakan pengembang lain karena sistem mereka juga menghasilkannya. Misalnya, di macOS, Finder membuat file .DS_Store yang menyertakan preferensi pengguna untuk tampilan dan tampilan folder, seperti ukuran dan posisi ikon.
- File konfigurasi yang dihasilkan oleh aplikasi seperti editor kode dan IDE (IDE adalah singkatan dari Integrated Development Environment). File-file ini khusus untuk Anda, konfigurasi Anda, dan pengaturan preferensi Anda.
- File yang dibuat secara otomatis dari bahasa pemrograman atau kerangka kerja yang Anda gunakan dalam proyek Anda dan file khusus kode yang dikompilasi, seperti file .o.
- Folder yang dihasilkan oleh manajer paket, seperti folder node_modules npm. Ini adalah folder yang digunakan untuk menyimpan dan melacak dependensi untuk setiap paket yang Anda instal secara lokal.
- File yang berisi data sensitif dan informasi pribadi. Beberapa contoh file tersebut adalah file dengan kredensial Anda (nama pengguna dan kata sandi) dan file dengan variabel lingkungan seperti file .env (file .env berisi kunci API yang harus tetap aman dan pribadi).
- File runtime, seperti file .log. Mereka memberikan informasi tentang aktivitas dan kesalahan penggunaan Sistem Operasi, serta riwayat peristiwa yang telah terjadi di dalam OS.
Baca Juga
Cara Mengabaikan File dan Folder di Git
Jika Anda ingin mengabaikan hanya satu file tertentu, Anda perlu memberikan path lengkap ke file tersebut dari akar proyek. Misalnya, jika Anda ingin mengabaikan file text.txt yang terletak di direktori root, Anda akan melakukan hal berikut:
/text.txt
Dan jika Anda ingin mengabaikan file text.txt yang terletak pada folder test di direktori root, Anda akan melakukan hal berikut:
/test/text.txt
Atau Anda juga bisa menulis perintah diatas seperti ini:
test/text.txt
Jika Anda ingin mengabaikan semua file dengan nama tertentu, Anda perlu menulis nama literal file tersebut. Misalnya, jika Anda ingin mengabaikan file text.txt apa pun, Anda harus menambahkan yang berikut ke .gitignore:
text.txt
Dalam hal ini, Anda tidak perlu memberikan path lengkap ke file tertentu. Pola ini akan mengabaikan semua file dengan nama tertentu yang berada di manapun dalam proyek.
Untuk mengabaikan seluruh direktori dengan semua isinya, Anda harus menyertakan nama direktori dengan garis miring / di bagian akhir:
test/
Perintah ini akan mengabaikan direktori apa pun (termasuk file lain dan subdirektori lain di dalam direktori) bernama test yang terletak di manapun dalam proyek Anda.
Sesuatu yang perlu diperhatikan adalah jika Anda menulis nama file saja atau nama direktori saja tanpa garis miring /, maka pola ini akan cocok dengan file atau direktori apa pun dengan nama itu:
test
Bagaimana jika Anda ingin mengabaikan file atau direktori yang dimulai dengan kata tertentu? Katakanlah Anda ingin mengabaikan semua file dan direktori yang memiliki nama dimulai dengan img. Untuk melakukan ini, Anda perlu menentukan nama yang ingin Anda abaikan diikuti dengan * pemilih wildcard seperti ini:
img*
Perintah ini akan mengabaikan semua file dan direktori yang memiliki nama dimulai dengan img.
Tetapi bagaimana jika Anda ingin mengabaikan file atau direktori yang diakhiri dengan kata tertentu? Jika Anda ingin mengabaikan semua file yang diakhiri dengan ekstensi file tertentu, Anda perlu menggunakan * pemilih wildcard diikuti dengan ekstensi file yang ingin Anda abaikan.
Misalnya, jika Anda ingin mengabaikan semua file penurunan harga yang diakhiri dengan ekstensi file .md, Anda harus menambahkan yang berikut ini ke file .gitignore Anda:
*.md
Pola ini akan cocok dengan file apa pun yang diakhiri dengan ekstensi .md yang terletak di manapun dalam proyek.
Sebelumnya, Anda melihat cara mengabaikan semua file yang diakhiri dengan akhiran tertentu. Apa yang terjadi jika Anda ingin membuat pengecualian, dan ada satu file dengan akhiran tersebut yang tidak ingin Anda abaikan? Katakanlah Anda menambahkan yang berikut ke file .gitignore Anda:
.md
Pola ini mengabaikan semua file yang diakhiri dengan .md, tetapi Anda tidak ingin Git mengabaikan file README.md. Untuk melakukannya, Anda perlu menggunakan pola negasi dengan tanda seru, !, untuk meniadakan file yang akan diabaikan:
# ignores all .md files .md # does not ignore the README.md file !README.md
Dengan kedua pola tersebut di file .gitignore, semua file yang diakhiri dengan .md diabaikan kecuali untuk file README.md. Yang perlu diingat adalah bahwa pola ini tidak akan berfungsi jika Anda mengabaikan seluruh direktori. Katakan bahwa Anda mengabaikan semua direktori test:
test/
Misalnya di dalam folder test, Anda memiliki file, example.md, yang tidak ingin Anda abaikan. Anda tidak dapat meniadakan file di dalam direktori yang diabaikan seperti ini:
# ignore all directories with the name test test/ # trying to negate a file inside an ignored directory won't work !test/example.md
Cara Mengabaikan File yang Dikomit Sebelumnya
Git hanya dapat mengabaikan file yang tidak terlacak yang belum dikomit ke repositori. Apa yang terjadi jika Anda telah meng-commit sebuah file sebelumnya dan ingin membatalkannya? Katakanlah Anda secara tidak sengaja meng-commit file .env yang menyimpan variabel environment. Pertama-tama Anda harus memperbarui file .gitignore untuk menyertakan file .env:
# add .env file to .gitignore echo ".env" >> .gitignore
Sekarang, Anda perlu memberi tahu Git untuk tidak melacak file ini dengan menghapusnya dari indeks:
git rm --cached .env
Perintah git rm, bersama dengan opsi –cached berfungsi untuk menghapus file dari repositori tetapi tidak menghapus file sebenarnya. Ini berarti file tersebut tetap berada di sistem lokal Anda dan di direktori kerja Anda sebagai file yang diabaikan.
Status git akan menunjukkan bahwa file tersebut tidak lagi ada di repositori, dan memasukkan perintah ls akan menunjukkan bahwa file tersebut ada di sistem file lokal Anda. Jika Anda ingin menghapus file dari repositori dan sistem lokal Anda, hilangkan opsi –cached. Selanjutnya, tambahkan .gitignore ke staging area menggunakan perintah git add:
git add .gitignore
Terakhir, commit file .gitignore menggunakan perintah git commit:
git commit -m "update ignored files"