Berlaku .gitignore yang ada repositori sudah pelacakan file dalam jumlah besar

Saya sudah memiliki Visual Studio proyek di repositori. Saya baru-baru ini ditambahkan .gitignore file di bawah proyek saya dan saya berasumsi bahwa memberitahu Git untuk mengabaikan file-file yang tercantum dalam file.

Masalah saya adalah bahwa semua file-file yang sudah dilacak dan sejauh yang saya tahu Git tidak akan mengabaikan file yang sudah dilacak sebelum aturan itu menambahkan untuk file ini untuk mengabaikannya.

Ia menyarankan untuk menggunakan: git rm --cache dan manual un-lagu mereka, tapi yang's akan mengambil selamanya untuk pergi melalui mereka satu per satu.

Saya berpikir tentang menghapus repositori dan menciptakan lagi tapi kali ini dengan .gitignore file ini, tapi ada harus menjadi cara yang lebih baik untuk melakukan hal ini.

Mengomentari pertanyaan (4)
Larutan

Ini jawaban memecahkan masalah saya:

Pertama-tama, melakukan semua perubahan tertunda.

Kemudian jalankan perintah ini:

git rm -r --cached .

Ini akan menghapus segala sesuatu dari indeks, maka hanya menjalankan:

git add .

Melakukan hal ini:

git commit -m ".gitignore is now working"
Komentar (9)
  1. Membuat .gitignore file, jadi untuk melakukan itu, anda hanya membuat apapun yang kosong .file txt.

  2. Kemudian anda harus mengubah namanya menulis baris berikut pada cmd (di mana git.txt adalah nama file anda've yang baru saja dibuat):

ganti nama git.txt .gitignore

  1. Kemudian anda dapat membuka file dan menulis semua yang terpantau file yang ingin anda mengabaikan untuk kebaikan. Misalnya, saya terlihat seperti ini:

``

OS file sampah [Tt]humbs.db *.DS_Store

Visual Studio file

.[Oo]bj .pengguna .aps .pch .vspscc .vssscc _i.c _p.c .ncb .suo .tlb .tlh .bak .[Cc]sakit .ilk .log .lib .sbr .sdf .pyc .xml ipch/ obj/ [Bb]di [Dd]ebug/ [Rr]skan*/ Ankh.NoLoad

Perkakas

_ReSharper/ .resharper [Tt]est[Rr]s*

File proyek

[Bb]uild/

Subversion file

.svn

Kantor Temp File

~$*

Ada's seluruh koleksi yang berguna .gitignore file dengan GitHub

  1. Setelah anda memiliki ini, anda perlu menambahkannya ke repositori git seperti file lain, hanya saja harus di root repositori.

  2. Kemudian di terminal anda, anda harus menulis baris berikut:

git config --global inti.excludesfile ~/.gitignore_global

Dari oficial doc:

Anda juga dapat membuat global .gitignore file, yang merupakan daftar dari aturan untuk mengabaikan file di setiap repositori Git di komputer anda. Untuk contoh, anda dapat membuat file di ~/.gitignore_global dan menambahkan beberapa aturan untuk itu.

Buka Terminal. Jalankan perintah berikut di terminal anda: git config --global inti.excludesfile ~/.gitignore_global

Jika respository sudah ada maka anda harus menjalankan perintah ini:

git rm -r --cached . git add . git commit-m ".gitignore sekarang bekerja"

Jika langkah 2 tidak´t bekerja maka anda harus menulis lubang rute dari file yang ingin anda tambahkan.

Komentar (3)

Seperti yang ditentukan di sini Anda dapat memperbarui indeks:

git update-index --assume-unchanged /path/to/file

Dengan melakukan ini, file-file tersebut tidak akan muncul di git status atau git diff.

Untuk memulai pelacakan file lagi yang dapat anda jalankan:

git update-index --no-assume-unchanged /path/to/file
Komentar (3)

Jika anda menambahkan anda .gitignore terlambat, git akan terus melacak sudah berkomitmen file yang terlepas. Untuk memperbaiki ini, anda selalu dapat menghapus semua cache contoh dari file yang tidak diinginkan.

Pertama, untuk memeriksa file apa saja yang anda benar-benar pelacakan, anda dapat menjalankan:

git ls-pohon-nama-saja-full-pohon -r KEPALA

Mari kita mengatakan bahwa anda menemukan file yang tidak diinginkan dalam sebuah direktori seperti cache/ jadi, it's lebih aman ke target direktori yang bukan semua file anda.

Jadi bukan:

git rm -r --cached .

It's lebih aman untuk target yang tidak diinginkan file atau direktori:

git rm -r --cached cache/

Kemudian melanjutkan untuk menambahkan semua perubahan,

git add .

dan komit...

git commit-m ".gitignore sekarang bekerja"`

Referensi: https://amyetheredge.com/code/13.html

Komentar (1)

Berikut adalah salah satu cara untuk "untrack" semua file yang lain akan diabaikan dalam arus set mengecualikan pola:

(GIT_INDEX_FILE=some-non-existent-file \
git ls-files --exclude-standard --others --directory --ignored -z) |
xargs -0 git rm --cached -r --ignore-unmatch --

Hal ini membuat file dalam direktori kerja anda tapi menghilangkan mereka dari indeks.

Trik yang digunakan di sini adalah untuk menyediakan non-ada file indeks untuk git ls-file sehingga berpikir tidak ada dilacak file. Shell kode di atas meminta semua file yang akan diabaikan jika indeks yang kosong dan kemudian menghapus mereka dari indeks yang sebenarnya dengan git rm.

Setelah file telah "terpantau", menggunakan git status untuk memverifikasi bahwa tidak ada yang penting yang telah dihapus (jika jadi sesuaikan mengecualikan pola dan menggunakan git reset -- jalan untuk memulihkan dihapus entri indeks). Kemudian membuat yang baru berkomitmen bahwa daun keluar "mentah".

Yang "mentah" masih akan di old melakukan. Anda dapat menggunakan git filter-cabang untuk menghasilkan bersih versi lama melakukan jika anda benar-benar perlu membersihkan sejarah (n.b. menggunakan git filter-cabang akan "menulis ulang sejarah", sehingga tidak boleh dianggap enteng jika anda memiliki salah satu kolaborator yang telah ditarik semua sejarah anda melakukan setelah "crud" pertama kali diperkenalkan).

Komentar (1)

Saya pikir ini adalah cara mudah untuk menambahkan .gitignore file yang ada di repositori.

Prasyarat:

Anda membutuhkan browser untuk mengakses akun github.

Langkah-langkah

  1. Membuat file baru di diperlukan (ada) proyek dan nama itu .gitignore. Anda akan mendapatkan sugestif prompt untuk .gitignore template secepat anda nama file seperti .gitignore. Baik menggunakan template ini atau gunakan gitignore.io untuk menghasilkan konten anda gitignore file.
  2. Melakukan perubahan.
  3. Sekarang clone repositori ini.

Bersenang-senang!

Komentar (0)

Menggunakan git bersih Mendapatkan bantuan ini berjalan

git clean -h

Jika anda ingin melihat apa yang akan terjadi terlebih dahulu, pastikan untuk lulus -n beralih untuk dry run:

git clean -xn

Untuk menghapus gitingnored sampah

git clean -xdf

Hati-hati: Anda dapat mengabaikan lokal config file seperti database.yml yang juga akan dihapus. Gunakan dengan resiko anda sendiri.

Kemudian

git add .
git commit -m ".gitignore is now working"
git push
Komentar (0)