Beberapa cara file .orig diperiksa di repositori git saya selama penggabungan, yang sekarang ditampilkan di sektor yang dimodifikasi dan tidak dilacak. Tapi saya tidak ingin file ini lagi di repositori saya. Bagaimana cara melakukannya.
modified: Gemfile.lock.orig
# modified: Gemfile.orig
# modified: app/assets/images/bg_required.png.orig
# modified: app/assets/javascripts/application.js.orig
etc...
Bantuan apa pun akan dihargai.
Jawaban:
Solusi terbaik dalam hal ini adalah tetap sederhana dan singkirkan file-file tersebut secara independen dari git:
Atau, di Windows / PowerShell, Anda dapat menjalankan perintah berikut
sumber
git clean -df
tidak melakukannya. Mengapa kita harus membersihkan sampah yang ditinggalkan secara manual?Coba
git clean
info lebih lanjut yang dapat Anda temukan di sini atau di sinisumber
git rm <filename>
dan kemudian melakukan commit. Setelah ini tambahkan file * .orig ke dalam diabaikan git.git clean -i
sangat bagus. itu akan memberi Anda daftar file yang akan dihapus dan memberi Anda opsi tentang cara menangani daftar (memfilter daftar, bisa menghapus semua yang ada dalam daftar, dan beberapa opsi lainnya).git clean -f -e '*.*' -e '!*.orig'
Hanya ada pola kecualikan, tetapi ia memiliki sedikit dukungan untuk pola negatif. Jadi kita bisa mengecualikan semua file*.*
, dan kemudian meniadakan pengecualian hanya*.orig
file.Anda dapat melakukan:
Untuk info lebih lanjut, lihat Git mergetool menghasilkan file .orig yang tidak diinginkan
sumber
Anda dapat mengabaikan file menggunakan .gitignore
Masukkan * .orig dalam daftar seperti yang ditunjukkan di sini
https://help.github.com/articles/ignoring-files
untuk menghapus file saat ini Anda dapat membuat skrip shell dan menjalankan dari folder proyek seperti di bawah ini
sumber
Sayangnya
git clean
tidak berfungsi untuk saya karena saya telah*.orig
menambahkan ke file global gitignore saya, jadi mereka diabaikan juga. Bahkan menjalankannyagit clean -x
tidak baik karena saya tidak ingin semua file saya yang diabaikan dihapus.git clean -i
sangat membantu, tetapi sebenarnya saya tidak ingin harus meninjau setiap file.Namun, kita dapat menggunakan pola kecualikan dan meniadakan kecocokan. Pratinjau dengan perintah ini:
Kemudian ketika Anda yakin, lulus
force
bendera untuk benar-benar menghapusnya:Berdasarkan komentar leorleor
sumber
git rm Gemfile.lock.orig
dan sisa file yang tidak Anda butuhkan.git commit --amend
Untuk sepenuhnya menghapus gumpalan itu,
git gc --prune=0 --aggressive
sumber
Bagi saya
git clean -f
menghapus semua file * .oig. Dan menyimpan yang sudah ada sebelumnya.Ini adalah (hampir) seperti setelah penggabungan:
.idea/codeStyles/
sudah ada sebelum penggabungan sebagai file yang tidak terlacak..idea/misc.xml.orig
(dan banyak lagi) harus dihapus.=> Menggunakan
git clean -f
:menghasilkan:
sumber
Anda bisa melakukannya
git status -s | grep "\.orig$" | awk '{print $2}' | xargs -n1 -r echo rm
TL; DR;
git status -s
memungkinkan Anda untuk mendapatkan semua file yang dimodifikasi / hilang sehubungan dengan indeksgrep "\.orig$"
memfilter file, menjaga akhiran dengan ".orig"awk '{print $2}'
daftar nama file (melewatkan informasi git misalnya A, M, ??)xargs -n1 -r echo rm
cetakan menghapus perintah pada setiap argumen (-n1: satu per satu dan -r: lewati saat kosong) cukup salin & tempel perintah periksa ulang untuk menghapus file.sumber
git rm <file>
http://git-scm.com/docs/git-rm
Juga tambahkan file / direktori yang ingin Anda abaikan ke file .gitignore Anda.
sumber
git rm <file> <file>
Cukup daftarkan mereka.git rm
, cukup gunakanrm
saja