Saya punya checkout git. Semua izin file berbeda dari apa yang menurut git mereka seharusnya karena itu mereka semua ditampilkan sebagai diubah.
Tanpa menyentuh konten file (hanya ingin memodifikasi izin) bagaimana cara mengatur semua file izin untuk apa yang menurut git seharusnya?
git
file
file-permissions
Dale Forester
sumber
sumber
Jawaban:
Git melacak filepermission dan mengekspos perubahan izin saat membuat tambalan menggunakan
git diff -p
. Jadi yang kita butuhkan adalah:Sebagai satu-liner:
Anda juga dapat menambahkannya sebagai alias ke konfigurasi git Anda ...
... dan Anda dapat memintanya melalui:
Catatan, jika Anda shell
bash
, pastikan untuk menggunakan'
alih-alih"
tanda kutip di sekitar!git
, jika tidak maka akan diganti dengangit
perintah terakhir yang Anda jalankan.Thx untuk @Mixologic untuk menunjukkan bahwa dengan hanya menggunakan
-R
padagit diff
, yang rumitsed
perintah tidak lagi diperlukan.sumber
fatal: unrecognized input
Mencoba
git config core.fileMode false
Dari
git config
halaman manual:sumber
git checkout origin/master
menetapkan izin file yang dikomit ke server ke copy pekerjaan lokal saya? Karena setiap kali saya membuat V8 untuk ArangoDB, izin file diubah sehingga akses ditolak ke seluruh folder build (bahkan dengan hak tinggi; Windows 7+). Saya perlu memperbaiki semua izin file lokal sebelum saya dapat melanjutkan proses pembuatan. Bisakahcore.filemode false
memperbaikinya juga? Saya menduga git untuk mengatur izin Linux pada mesin Windows saya. Skrip build mungkin hanya menyimpannya dan menerapkan izin yang sama untuk file yang baru dibuat ...filemode
untukfalse
!Git tidak menyimpan izin file selain skrip yang dapat dieksekusi. Pertimbangkan untuk menggunakan sesuatu seperti git-cache-meta untuk menyimpan kepemilikan dan izin file.
Git hanya dapat menyimpan dua jenis mode: 755 (dapat dieksekusi) dan 644 (tidak dapat dijalankan). Jika file Anda adalah 444 git akan menyimpannya memiliki 644.
sumber
umask
serta pengaturan konfigurasi, lihat stackoverflow.com/a/12735291/125150 ....a mode of 100644, which means it’s a normal file. Other options are 100755, which means it’s an executable file; and 120000, which specifies a symbolic link. The mode is taken from normal UNIX modes but is much less flexible — these three modes are the only ones that are valid for files (blobs) in Git (although other modes are used for directories and submodules).
akan bekerja dalam banyak kasus tetapi jika Anda memiliki alat-alat eksternal seperti ter-instal meld Anda harus menambahkan --no-ext-diff
diperlukan dalam situasi saya
sumber
Anda juga dapat mencoba kunci checkout sebelum / sesudahnya yang dapat melakukan trik.
Lihat: Menyesuaikan Git - Git Hooks
sumber
Saya menggunakan git dari cygwin di Windows,
git apply
solusinya tidak bekerja untuk saya. Inilah solusi saya, jalankanchmod
pada setiap file untuk mengatur ulang izinnya.sumber
git diff -p
digunakan dalam jawaban muhqu mungkin tidak menunjukkan semua perbedaan.core.filemode
adalahfalse
(yang merupakan default untuk msysgit)Kode ini membaca metadata secara langsung sebagai gantinya:
Lapisan satu tingkat non-produksi (menggantikan sepenuhnya topeng):
(Kredit untuk "$ '\ 0'" berlaku untuk http://transnum.blogspot.ru/2008/11/bashs-read-built-in-supports-0-as.html )
sumber
Hal termudah untuk dilakukan adalah dengan hanya mengubah kembali izin. Seperti yang dicatat @kroger, git hanya melacak bit yang dapat dieksekusi. Jadi, Anda mungkin hanya perlu menjalankan
chmod -x filename
untuk memperbaikinya (atau+x
jika itu yang diperlukan.sumber
git show
: diff --git a / OpenWatch / src / org / ale / openwatch / fb / FBUtils.java b / OpenWatch / src / org / ale / openwatch / fb / index FBUtils.java cd6fa6a..e5b0935 100.644 Itu sedikit tebal ada izin file.100644
ke100755
. Saya pikir Anda tidak pantas menerima downvote; Git harus turun suara. Sangat rusak dalam banyak hal di berbagai tingkatan ...The
etckeeper
alat dapat menangani perizinan dan dengan:Anda dapat menggunakannya untuk dir selain
/etc
.Instal dengan menggunakan manajer paket Anda atau dapatkan sumber dari tautan di atas.
sumber