Hapus File yang Ada dari Git Repo

Jawaban:

143

Sekedar memberi jawaban lengkap sekaligus:

  1. from klemens: Anda perlu menambahkan file ke .gitignorefile Anda di suatu tempat di atas file yang tidak diinginkan dalam repo. yaitu

    $ cd $ cat >> .gitignore development.log Cd

  2. dari m. narebski: Anda kemudian perlu menghapus file dari repo dengan menjalankan " git rm --cached <file>dan kemudian melakukan penghapusan ini"

Jika Anda juga berharap untuk membuat repo tampak seolah-olah tidak pernah melacak file itu, itu jauh lebih rumit dan sangat tidak dianjurkan karena tidak hanya membuat komitmen baru untuk setiap komitmen dalam sejarah Anda, sehingga menghancurkan interoperabilitas dengan cara yang buruk. antara orang lain yang telah mengkloning repo Anda, tetapi itu juga membuat semua komitmen tersebut tidak diuji (dengan asumsi Anda menguji komitmen Anda sebelum membuatnya).

Dengan peringatan itu, alat yang Anda cari jika itu tujuan Anda filter-branch. Contoh pertama melakukan persis apa yang saya gambarkan.

Tim Visher
sumber
3
menggunakan git rm --cached tampaknya tidak hanya menghapusnya cabang saya, tetapi ketika saya menarik ke sistem lain itu menghapus file secara fisik pada sistem itu. Adakah yang tahu apa yang terjadi di sana?
biagidp
2
Menanggapi hal di atas: Saya percaya masalah ini adalah bahwa saya tidak memiliki .gitignore di tempat pada sistem alternatif sebelum menarik perubahan, jadi hapus menghapus salinan lokal. Setidaknya itulah teorinya
biagidp
53

Untuk berhenti melacak file, cukup gunakan git rm --cached <filename>.

Tetapi seperti yang ditunjukkan oleh yang lain di sini, menambahkan file ke .gitignore mungkin mencegah Anda menambahkannya secara tidak sengaja nanti.

kusma
sumber
1

tambahkan file gitignore.

lihat http://git-scm.com/docs/gitignore

fetzig
sumber
13
Ini hanya setengah dari jawabannya. .gitignoreentri tidak berlaku untuk file yang sudah dilacak.
CB Bailey
10
Bagian kedua adalah git rm --cached <file>dan kemudian melakukan penghapusan ini.
Jakub Narębski
1
Mengapa tidak ada perintah sederhana untuk git untuk mengevaluasi kembali semua file yang saat ini dilacak sesuai dengan file .gitignore saat ini? ... Atau apakah itu terlalu masuk akal? : p
Alexander - Reinstate Monica