ジャストはなってsome.sh
(実行可能ファイルにファイルをchmod 755 ...
コンテンツ)、権限が更新されましたが、ありません。ファイルをgit にコミットして、実行可能ビットがクローン / チェックアウト / プルで復元/設定されるようにする方法はありますか?
更新:新しい権限が送信されたことをどのように追跡できgithub
ますか?
ジャストはなってsome.sh
(実行可能ファイルにファイルをchmod 755 ...
コンテンツ)、権限が更新されましたが、ありません。ファイルをgit にコミットして、実行可能ビットがクローン / チェックアウト / プルで復元/設定されるようにする方法はありますか?
更新:新しい権限が送信されたことをどのように追跡できgithub
ますか?
回答:
デフォルトでは、gitは実行ファイルの権限を変更すると更新します。他の権限を変更または追跡しません。
実行権限の変更時に変更が表示されない場合は、ファイルモードを無視する構成がgitにある可能性があります。
ファイルの.git
フォルダーでプロジェクトを確認するconfig
と、次のようなものが表示されます。
[core]
filemode = false
true
お好みのテキストエディターで変更するか、次のコマンドを実行します。
git config core.filemode true
そうすれば、ファイルを正常にコミットできるはずです。権限の変更のみをコミットします。
git status
は、私は変更を確認...
@fooMonsterの記事が役に立った
# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe script.sh
ご覧のとおり、ファイルには644の権限があります(100を無視)。これを755に変更します。
# git update-index --chmod=+x script.sh
変更をコミットする
# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh
git commit -a
しても何も起こらないことに注意してください。ただし、コマンドラインでメッセージを設定すると機能しました。ちょっとした癖
# git update-index --chmod=+x script.sh
# git ls-tree HEAD
# git commit -m "Changing file permissions"
# git push
私のために働いていません。
モードはtrueで、ファイルのパーマは変更されていますが、gitは実行する作業がないと言っています。
git init
git add dir/file
chmod 440 dir/file
git commit -a
問題は、gitが特定の権限の変更のみを認識することです。
git
実際には、ファイルが実行可能かどうかだけが追跡され、* nix権限の完全なセットは追跡されません。したがって、コミットする価値がある何かを変更したと考えるために、ファイルを実行可能ファイルとそうでないファイルの間で切り替える必要があります...
post-checkout
フックがありますがgit
、それがワークツリーのファイルを更新するすべての可能なことをカバーするかどうかはわかりません。リポジトリに追加のシェルスクリプトを用意して、状況に応じて設定することをお勧めします。あるいは、git
メタデータを保存するために拡張するプロジェクトがいくつかありますが、実際にそれらを試したことはありません...
git update-index --refresh
が、差分が表示されますold mode 100644 new mode 100755
。すべての権限が更新されなかった
github
ますか?