Saya menggunakan Git di Windows, dan ingin mendorong skrip shell yang dapat dieksekusi ke git repo oleh satu komit.
Biasanya saya perlu melakukan dua langkah ( git commit
).
$ vi install.sh
$ git add install.sh
$ git commit -am "add new file for installation" # first commit
[master f2e92da] add support for install.sh
1 files changed, 18 insertions(+), 3 deletions(-)
create mode 100644 install.sh
$ git update-index --chmod=+x install.sh
$ git commit -am "update file permission" # second commit
[master 317ba0c] update file permission
0 files changed
mode change 100644 => 100755 install.sh
Bagaimana saya bisa menggabungkan kedua langkah ini menjadi satu langkah? konfigurasi git? perintah windows?
Ingatkan : Dua jawaban baik, git add --chmod=+x file
didukung dalam versi git baru
Referensi: lihat pertanyaan dalam izin file Git pada Windows untuk komit kedua
git add --chmod=+x
sebenarnya mungkin. Lihat jawaban saya di bawah ini , penghargaan untuk Edward Thomson .git add --chmod=+x
versiJawaban:
Tidak perlu melakukan ini dalam dua komit, Anda dapat menambahkan file dan menandainya dapat dieksekusi dalam satu komit:
Seperti yang Anda perhatikan, setelah menambahkan, mode adalah 0644 (yaitu, tidak dapat dieksekusi). Namun, kami dapat menandainya sebagai executable sebelum melakukan:
Dan sekarang file tersebut adalah mode 0755 (dapat dieksekusi).
Dan sekarang kita memiliki satu komit dengan satu file yang dapat dieksekusi.
sumber
git 2.9.x / 2.10 (Q3 2016) sebenarnya akan memungkinkan itu (terima kasih kepada Edward Thomson ):
Itu membuat semua proses lebih cepat, dan bekerja bahkan jika
core.filemode
disetel ke false.Lihat komit 4e55ed3 (31 Mei 2016) oleh Edward Thomson (
ethomson
) .Dibantu-oleh: Johannes Schindelin (
dscho
) .(Digabung oleh Junio C Hamano -
gitster
- di commit c8b080a , 06 Jul 2016)sumber
Jika file sudah memiliki flag + x yang ditetapkan,
git update-index --chmod=+x
tidak melakukan apa-apa dan git berpikir tidak ada yang harus dikomit, meskipun flag tidak disimpan ke dalam repo.Pertama-tama Anda harus menghapus flag, menjalankan perintah git, lalu mengembalikan flag:
kemudian git melihat perubahan dan akan memungkinkan Anda untuk melakukan perubahan.
sumber
Catatan itu pertama-tama Anda harus yakin tentang
filemode
diatur kefalse
dalam file config git, atau gunakan perintah ini:dan kemudian Anda dapat mengatur izin 0777 dengan perintah ini:
sumber
Saya tidak punya
touch
danchmod
perintah di cmd.exe saya dangit update-index --chmod=+x foo.sh
tidak bekerja untuk saya.Saya akhirnya menyelesaikannya dengan mengatur
skip-worktree
bit:sumber