Bagaimana saya bisa mengabaikan direktori atau folder di Git menggunakan msysgit di Windows?
.gitkeep
) untuk menunjukkan direktori yang harus disimpan
/
pada akhirnya apa yang membuatnya tahu itu direktori yang harus diabaikan?
Bagaimana saya bisa mengabaikan direktori atau folder di Git menggunakan msysgit di Windows?
.gitkeep
) untuk menunjukkan direktori yang harus disimpan
/
pada akhirnya apa yang membuatnya tahu itu direktori yang harus diabaikan?
Jawaban:
Buat file dengan nama .gitignore
di direktori proyek Anda. Abaikan direktori dengan memasukkan nama direktori ke dalam file (dengan garis miring ditambahkan):
dir_to_ignore/
Informasi lebih lanjut ada di sini .
Secara default, Windows Explorer akan ditampilkan .gitignore
padahal sebenarnya nama filenya .gitignore.txt
.
Git tidak akan digunakan .gitignore.txt
Dan Anda tidak dapat mengubah nama file menjadi .gitignore
, karena Windows Explorer berpikir itu file tipe gitignore tanpa nama.
Solusi baris tanpa perintah:
Anda dapat mengganti nama file menjadi ".gitignore." , dan itu akan membuat ".gitignore"
".gitignore"
dan menyimpannya tanpa secara otomatis menambahkan ekstensi.
".gitignore."
- Ini trik yang bagus! Saya selalu memiliki masalah dengan .htaccess
juga ...
Tampaknya untuk mengabaikan file dan direktori ada dua cara utama:
.gitignore
.gitignore
file ke dalam root repositori Anda di samping .git
folder (di Windows, pastikan Anda melihat ekstensi file yang benar dan kemudian buat .gitignore.
(dengan titik di bagian akhir untuk membuat ekstensi file kosong))~/.gitignore_global
dan berjalan git config --global core.excludesfile ~/.gitignore_global
untuk menambahkan ini ke konfigurasi Git AndaCatatan: file yang dilacak sebelum dapat dilacak dengan menjalankan git rm --cached filename
Kecualikan repositori - Untuk file lokal yang tidak perlu dibagi, Anda cukup menambahkan pola file atau direktori ke file .git/info/exclude
. Aturan tesis tidak dilakukan, sehingga tidak terlihat oleh pengguna lain . Informasi lebih lanjut ada di sini .
Untuk membuat pengecualian dalam daftar file yang diabaikan, lihat pertanyaan ini .
git rm --cached <filename>
. Benar-benar penting untuk repo yang ada SEBELUM Anda membuat.gitignore
Saya punya beberapa masalah membuat file di Windows Explorer dengan .
di awal.
Solusinya adalah masuk ke commandshell dan membuat file baru menggunakan "edit".
.
di akhir sehingga penjelajah berhenti berpikir .gitignore
ekstensi. Kemudian pada entri bahwa trailing dot tanpa ekstensi baru saja dimakan dan Anda dibiarkan dengan .gitignore
TL; DR: coba .gitignore.
.gitignore
Untuk menginstruksikan Git untuk mengabaikan file atau folder tertentu, Anda harus membuat .gitignore
file.
Tetapi di Windows Explorer Anda harus memberikan nama untuk file tersebut. Anda tidak dapat membuat file hanya dengan ekstensi. Caranya adalah membuat file teks kosong dan pergi ke command prompt dan ubah nama file menjadi .gitignore
:
ren "New Text Document.txt" .gitignore
Sekarang buka file dengan editor teks favorit Anda dan tambahkan nama file / folder yang ingin Anda abaikan. Anda juga dapat menggunakan wildcard seperti ini: *.txt
.
type nul > .gitignore
untuk membuat file kosong
.gitignore.
ketika ekstensi file tidak disembunyikan di penjelajah Windows Anda
Jika Anda ingin mempertahankan folder dan bukan file di dalamnya, cukup masukkan file ".gitignore" di folder dengan "*" sebagai konten. File ini akan membuat Git mengabaikan semua konten dari repositori. Tetapi .gitignore
akan dimasukkan dalam repositori Anda.
$ git add path/to/folder/.gitignore
Jika Anda menambahkan folder kosong, Anda menerima pesan ini (.gitignore adalah file tersembunyi)
The following paths are ignored by one of your .gitignore files:
path/to/folder/.gitignore
Use -f if you really want to add them.
fatal: no files added
Jadi, gunakan "-f" untuk memaksa menambahkan:
$ git add path/to/folder/.gitignore -f
Di Windows ada tangkapan tambahan dengan garis miring. Tidak termasuk direktori tunggal di .gitignore with
dir_to_exclude /
mungkin akan berfungsi, tetapi mengecualikan semua direktori dengan
/
menyebabkan masalah ketika Anda memiliki nama file dengan spasi (seperti my file.txt
) di direktori Anda: Git Bash lolos dari spasi ini dengan backslash (seperti my\ file.txt
) dan Git untuk Windows tidak membedakan antara /
dan \
.
Untuk mengecualikan semua direktori, gunakan lebih baik:
** /
Dua tanda bintang berturut-turut menandakan konten direktori.
Juga di \.git\info
direktori proyek Anda ada file pengecualian yang secara efektif sama dengan .gitignore
(saya pikir). Anda dapat menambahkan file dan direktori untuk diabaikan dalam hal itu.
Kalau-kalau Anda perlu mengecualikan sub folder Anda dapat menggunakan **
wildcard untuk mengecualikan setiap tingkat sub direktori.
**/build/output/Debug/
Untuk mengabaikan seluruh direktori di Git, cara termudah adalah memasukkan file .gitignore ke dalam direktori target yang hanya berisi "*".
Contoh ilustratif,
Contoh Sistem
/root/
.gitignore
/dirA/
someFile1.txt
someFile2.txt
/dirB/
.gitignore
someFile3.txt
someFile4.txt
Tujuan
Tingkat Atas .gitignore (/root/.gitignore)
Direktori Diabaikan .gitignore (/root/dirB.gitignore)
Dan sesederhana itu :)
Ketika semuanya gagal coba edit file
/.git/info/exclude
dan menambahkan direktori yang Anda inginkan di akhir file, seperti ini:
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
assets/
compiled/
Saya menambahkan folder "aset" dan "dikompilasi" ke daftar file dan direktori untuk diabaikan.
Anda dapat membuat file ".gitignore" dengan konten:
*
!.gitignore
Ini bekerja untuk saya.
Di Unix:
touch .gitignore
Di Windows:
echo > .gitignore
Perintah-perintah ini dieksekusi di terminal akan membuat a .gitignore
file di lokasi saat ini.
Kemudian tambahkan saja informasi ke .gitignore
file ini (menggunakan Notepad ++ misalnya) file atau folder mana yang harus diabaikan. Simpan perubahan Anda. Itu dia :)
Informasi lebih lanjut: .gitignore
Saya punya beberapa masalah dengan Git untuk mengambil .gitignore
file di Windows. The $GIT_DIR/info/exclude
berkas selalu tampaknya bekerja sekalipun.
Kelemahan dari pendekatan ini, bagaimanapun, adalah bahwa file-file dalam $GIT_DIR
direktori tidak termasuk dalam check-in, dan karenanya tidak dibagikan.
ps
$GIT_DIR
biasanya folder tersembunyi bernama.git
Saya berasumsi masalahnya adalah bahwa pohon kerja Anda seperti:
a-cache/foo
a-cache/index.html
b-cache/bar
b-cache/foo
b-cache/index.html
.gitignore
... dengan yang .gitignore
Anda jelaskan. Ini akan memberi Anda git status
output seperti:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# a-cache/
# b-cache/
... jika itu index.html
file belum ditambahkan ke repositori. (Git melihat bahwa ada file yang belum disimpan dalam direktori cache, tetapi hanya melaporkan direktori.) Untuk memperbaiki ini, pastikan bahwa Anda telah menambahkan dan melakukan index.html
file:
git add *cache/index.html
git commit -m "Adding index.html files to the cache directories"
... dan git status
kemudian Anda akan terlihat seperti:
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
(Tentunya kamu juga ingin berkomitmen .gitignore
. Aku hanya malas dengan test case ini.)
Di Windows dan Mac, jika Anda ingin mengabaikan folder bernama Flower_Data_Folder di direktori saat ini, Anda dapat melakukannya:
echo Flower_Data_Folder >> .gitignore
Jika sebuah file bernama data.txt
:
echo data.txt >> .gitignore
Jika itu jalan seperti "Data / passwords.txt"
echo "Data/passwords.txt" >> .gitignore.
Saya memiliki masalah serupa. Saya bekerja pada rantai alat Windows dengan repositori bersama dengan orang-orang Linux, dan mereka dengan senang hati membuat file dengan nama yang sama (kecuali untuk kasus) di folder yang diberikan.
Efeknya adalah saya dapat mengkloning repositori dan segera memiliki lusinan file yang 'dimodifikasi' yang, jika saya check-in, akan membuat kekacauan.
Saya memiliki Windows diatur ke case sensitif dan Git untuk tidak mengabaikan kasus, tetapi masih gagal (dalam panggilan Win32 API rupanya).
Jika saya gitignore file maka saya harus ingat untuk tidak melacak file .gitignore.
Tetapi saya menemukan jawaban yang bagus di sini:
http://archive.robwilkerson.org/2010/03/02/git-tip-ignore-changes-to-tracked-files/index.html
Cukup buat .gitignore
file di folder proyek Anda Lalu tambahkan nama folder di dalamnya untuk contoh:
frontend/node_modules