Untrack file dari git sementara


449

Saya telah menyiapkan git lokal di mesin saya. Ketika saya menginisialisasi git, saya menambahkan lib dan binari yang telah dikompilasi sebelumnya. Namun, sekarang selama pengembangan saya, saya tidak ingin memeriksa file-file itu sebentar-sebentar. Saya tidak ingin menghapus file-file ini dari repo. Apakah ada cara untuk tidak melacak file-file ini sampai saya menyelesaikan pengembangan saya. (Saya pikir saya tidak bisa menggunakan .gitignore karena hanya berfungsi untuk file-file yang tidak ada di git. Saya ingin menonaktifkan sementara pelacakan file.)



Jawaban:


722

git update-index harus melakukan apa yang Anda inginkan

Ini akan memberi tahu git Anda ingin mulai mengabaikan perubahan pada file
git update-index --assume-unchanged path/to/file

Saat Anda ingin mulai melacak lagi
git update-index --no-assume-unchanged path/to/file

Dokumentasi Github: pembaruan-indeks


3
Akhirnya sebuah perintah yang benar-benar berfungsi untuk file dev saya yang tidak sengaja dilakukan, terima kasih :)
Richard de Wit

15
Mengapa tidak git rm -r --cached <file>?
Ehsan

23
@ Ehsan tampaknya git rm --cachedakan menyebabkan penghapusan salinan lokal pada mesin lain, di mana cabang yang sama diperiksa, pada tarikan berikutnya. Lihat arlocarreon.com/blog/git/… dan terutama diskusi di bawahnya.
mit

3
Tidak berfungsi untuk saya, ketika saya membuat perubahan pada file itu masih ditambahkan ke perubahan yang disertakan. Saya dapat mengecualikan, tetapi kemudian pada beberapa titik mungkin akan ditambahkan secara tidak sengaja.
MrFox

8
menganggap-tidak berubah tidak dimaksudkan untuk tujuan ini. Mungkin ingin membaca utas
Appy

264

Anda dapat menyimpan file Anda setelah dilacak

git rm -r --cached <file>

tambahkan file Anda dengan

git add -u

mereka mendorong atau melakukan apa pun yang Anda inginkan.


19
Itu sebenarnya jawaban yang tepat menurut: git-scm.com/book/en/v2/…
Ehsan

git rm --cached .DS_Store lalu mencetak rm '../.DS_Store'Dan file lokal dihapus ??! ( git version 2.6.4 (Apple Git-63))
Weishi Zeng


4
Ini bukan jawaban yang benar karena ini akan menghapus file dalam sumber. OP ingin mengabaikan perubahan lokal dari file itu, tidak menghapus pelacakan untuk itu sama sekali
cjsimon

2
PERINGATAN: itu akan menghapus file yang ingin Anda lacak juga. Solusi adalah menyalin semua file di suatu tempat, dan menyalinnya kembali setelah komit.
psad

111
git rm --cached

Namun, Anda tidak boleh membuat binari yang dikompilasi dan dependensi eksternal sejak awal. Gunakan alat seperti Bundler untuk menariknya.


2
Jangan lupa opsi -r (rekursif) untuk direktori: git rm -r --cached
Anatoliy Shuba


7

Git-book menyebutkan ini di bagian 2.4: "Undoing Things". Pada dasarnya, yang harus Anda lakukan adalah mengatur ulang status indeks untuk beberapa file kembali ke status HEAD, yaitu ke keadaan checkout terakhir (atau komit). Ini membatalkan pementasan file ke indeks saat ini. Perintah untuk tugas ini adalah git reset. [1]

Jadi, perintah yang harus Anda jalankan adalah:

git reset HEAD /path/to/file

Versi git yang lebih baru (saya percaya sejak 1,6 atau lebih) memberikan perintah ini (dan banyak lagi) sebagai tip ketika menjalankan git status. Versi ini sangat ramah pengguna. Kiat pribadi: jika Anda hanya menentukan beberapa file, gunakan git add -i. Ini akan meluncurkan alat pementasan interaktif, yang menjadikannya sangat mudah. Juga, saya sangat merekomendasikan membaca buku ini, karena sangat eksplisit tentang penggunaan git dalam situasi praktis.

[1] http://www.git-scm.com/book


Saya setuju itu git reset [file]adalah cara paling mudah untuk menghapus file di panggung.
Spectral

18
kehancuran dan tidak terlacak adalah hal yang berbeda
Jaime Sangcap

6

Bukan jawaban untuk pertanyaan awal. Tapi ini mungkin bisa membantu seseorang.

Untuk melihat perubahan yang telah Anda lakukan ( ketahui file mana yang ditandai sebagai --assume-tidak berubah )

git ls-files -v

Daftar file yang dihasilkan akan memiliki awalan dengan satu karakter (mis: H atau h) Jika itu adalah huruf kecil (yaitu h) maka file itu ditandai --assume-tidak berubah


5

Saya berasumsi bahwa Anda bertanya bagaimana menghapus SEMUA file di folder build atau folder bin, Daripada memilih setiap file secara terpisah.

Anda dapat menggunakan perintah ini:

git rm -r -f /build\*

Pastikan Anda berada di direktori induk dari direktori build.
Perintah ini akan, secara rekursif "menghapus" semua file yang ada di folder bin / atau build /. Dengan kata delete yang saya maksud git akan berpura-pura bahwa file-file itu "dihapus" dan file-file itu tidak akan dilacak. Git benar-benar menandai file-file itu berada dalam mode hapus.

Pastikan Anda memiliki .gitignore Anda siap untuk komitmen yang akan datang.
Dokumentasi: git rm


1

git reset [file]

Dapatkan file kembali dari area staging ke direktori yang berfungsi

Saya sering lupa menambahkan modul simpul saya ke file .gitignore, ini menyelesaikan masalah itu.


1

Ini berhasil untuk saya

git reset HEAD 'nama file'


1

Untuk menghapus semua file Untrack. Coba perintah terminal ini

 git clean -fdx

Ini akan menghapus file dari disk dan bukan dari git history.
Leonardo

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.