Beberapa waktu lalu saya melakukan ini untuk mengabaikan perubahan pada file yang dilacak oleh git:
git update-index --skip-worktree <file>
Sekarang saya benar-benar ingin melakukan perubahan pada file ke sumber. Bagaimana cara membatalkan efek skip-worktree
?
Jawaban:
Aha! Saya hanya ingin:
sumber
Menurut http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html , gunakan
git ls-files -v
untuk melihat file "anggap tidak berubah" dan "lewati-worktree" yang ditandai dengan huruf khusus. File "skip-worktree" ditandai dengan
S
.Sunting : Seperti yang disebutkan @amacleod , membuat alias untuk membuat daftar semua file tersembunyi adalah trik yang bagus untuk dimiliki sehingga Anda tidak perlu mengingatnya. Saya menggunakan
alias hidden="git ls-files -v | grep '^S'"
di .bash_profile saya. Ini sangat bagus!sumber
git ls-files -v | grep '^S'
untuk daftar file yang saya "sembunyikan" dengan skip-worktree. Berharap untuk membuat alias "tersembunyi" untuk perintah itu, tetapi menempatkan pengalihan pipa di alias sepertinya tidak berhasil.!
. Seperti ini[alias] ignored = !git ls-files -v | grep "^S"
Diuji, berfungsi.grep
, saya tidak tahu. Tergantung pada kulitmu, kurasa. Git Bash memang datanggrep
, saya pikir.'
tidak berfungsi tetapi"
tidak, yaitugit ls-files -v | grep "^S"
Jika Anda ingin membatalkan semua file yang diterapkan melewati worktree, Anda dapat menggunakan perintah berikut:
git ls-files -v
akan mencetak semua file dengan statusnyagrep -i ^S
akan memfilter file dan hanya memilih lewati worktree (S) atau lewati worktree dan anggap tidak berubah, -i berarti abaikan case sensitivecut -c 3-
akan menghapus status dan hanya menyisakan jalur, memotong dari karakter 3-rd hingga akhirtr '\012' '\000'
akan mengganti karakter ujung baris (\ 012) menjadi nol karakter (\ 000)xargs -0 git update-index --no-skip-worktree
akan melewati semua jalur yang dipisahkan oleh karakter nol kegit update-index --no-skip-worktree
untuk membatalkansumber
Berdasarkan jawaban @ GuidC0DE, ini adalah versi untuk Powershell (saya menggunakan posh-git )
Dan untuk referensi juga perintah sebaliknya untuk menyembunyikan file:
sumber
Bagi mereka yang menggunakan Tortoise Git:
TortoiseGit > Check for modifications
Show ignore local changes flagged files
. Anda akan melihat file yang Anda abaikan (atau semua file yang Anda abaikan, jika Anda mengklik kanan pada folder)Unflag as skip-worktree and assume-unchanged
sumber
Untuk kalian semua yang mencintai alias Bash, berikut adalah set saya untuk mengatur semuanya (berdasarkan C0DEF52)
sumber
Jawaban ini ditujukan untuk orang yang kurang teknis menggunakan Windows.
Jika Anda tidak ingat / tahu file mana yang Anda klik "lewati-worktree" di kemudian gunakan:
Untuk memperbaiki masalah Anda:
Anda dapat membuka file -> klik kanan -> mengembalikan ke versi sebelumnya -> klik tab "git" di atas -> hapus centang pada kotak "lewati-worktree" -> klik "Terapkan" di bagian bawah.
Jika file terlalu banyak untuk diperbaiki dengan tangan maka Anda harus merujuk ke jawaban lainnya.
sumber