WindowsでのGitファイルのアクセス許可


172

Gitでのファイルのアクセス許可に関するいくつかの質問を読みましたが、まだ少し混乱しています。GitHubに別のリポジトリから分岐したレポがあります。マージ後、それらは同一である必要があります。しかしながら:

$ git diff --summary origin/epsilon master/epsilon
 mode change 100644 => 100755 ants/dist/sample_bots/csharp/compile.sh
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/MyBot.coffee
 mode change 100644 => 100755 ants/dist/starter_bots/coffeescript/ants.coffee
 mode change 100644 => 100755 ants/util/block_test.sh
 mode change 100644 => 100755 manager/mass_skill_update.py
 mode change 100644 => 100755 worker/jailguard.py
 mode change 100644 => 100755 worker/release_stale_jails.py
 mode change 100644 => 100755 worker/start_worker.sh

ファイルのアクセス許可を変更しようとしましたが、diffの結果は変更されません。

回答:


346

Windowsでアクセス許可を(また)変更する方法の解決策は、http//blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.htmlにあります。

たとえば、次のコマンドは、ユーザー実行権限を任意のファイルに追加します。

git update-index --chmod=+x <file>

6
+1:(私がにcore.filemode設定したfalse)Windowsからコミットするシェルスクリプトが実際に実行ビットセットを確実に持つようにするために必要なもの
tomlogic 2013年

私の場合、ファイルに新しい行を追加し、それから
初めて

5
Windowsでは、git-bashを使用--addして、何らかの理由で実行のフラグが必要でしたgit update-index --add --chmod=+x <file>。この後、ファイルはすでにchmodでステージにありました
Jefferson Quesado '16

git bashでもcmd.exeプロンプトでも、効果はありません。
ベン

106

ここでのstackoverflowに関する別の質問から: Gitにファイルモード(chmod)の変更を無視させるにはどうすればよいですか?

試してください:

git config core.filemode false

以下からのgit-config設定(1)

   core.fileMode
       If false, the executable bit differences between the index and the
       working copy are ignored; useful on broken filesystems like FAT.
       See git-update-index(1). True by default.

ありがとう。私も見ました。試しても違いはありませんでした。
Synesso

3
OPと同様の問題があり、どのようhardにリセットしようとしても変更をプルできませんでした。これは私にとってはトリックでした。
Jo-Herman Haugholt、2011年

11
[プロジェクト] /。git / configには同じ設定が含まれる場合があり、〜/ .gitconfigをオーバーライドします。グローバルに設定しようとしている場合は、ローカルでオーバーライドされていないことを確認してください。
Binary Phile 2013年

1
悲しいことに、これはNTFSでも必要だと思います。
Marc.2377

1
それが答えです!
Andrew Surdu

29

Git Bashの便利なワンライナー:

find . -name '*.sh' | xargs git update-index --chmod=+x

すべての.shファイルを実行可能としてマークします。その後、あなたはただしなければなりませんgit commit


2
@ benoit-blanchonワンライナーの小さな修正... .shは引用符で囲む必要があります。見つける。-name ' .sh' | xargs git update-index --chmod = + x
Steven the Easily

あなたは正しい、私は答えを編集しました。@SteventheEasilyAmusedに感謝します。
Benoit Blanchon、2016

15

Cygwin git(または私が想定しているLinux gitも)を使用している場合、core.filemode設定が$ projdir / .git / configのプロジェクトレベルで設定されている可能性が十分にあります。Cygwin gitとWindows gitをWindowsファイルシステムでうまく共存させるために、存在しないファイルモードの変更が常に表示されることなく、次のことを行う必要があることがわかりました。

  • $ projdir / .git / configの行設定core.filemodeを削除します
  • Windows gitで、「git config --global core.filemode false」を実行します

これにより、Cygwin gitは通常、関連するファイルモードの変更を引き続き確認できますが、Windows gitは通常、誤検知であるファイルモードの変更を無視するように指示します。


5

Ubuntuでファイルのアクセス許可を変更して修正し、コミット、プッシュ、すべてOKにしました。Windows / NTFSのmsysgitでは機能しないようです。


私は窓のためのGitHubをお勧めします。Wonderfullインターフェイスと本当に素晴らしいシェル、私は比較的簡単なsshキーのセットアップとgitフローのインストールも行いました。
三国

5

まず、以下のコマンドを使用してファイルの権限を確認します。

git ls-files --stage

次に、権限を変更します。ここで、「x」は実行権限を表します。

git update-index --chmod=+x 'scriptname.ext'

権限を再確認してください。

git ls-files --stage

==============================================

Windows PCを使用しているが、Linuxマシンにデプロイしている場合。以下のコマンドを最初に実行して、Linuxマシンでの実行に互換性を持たせます。

dos2unix scriptname.ext scriptname.ext


のようなことをする方法はありませんgit update-index --chmod=1777 'scriptname.ext'か?
Alex Barker

スクリプトファイルが存在するパスに移動しましたか?@alex
Sireesh Yarlagadda
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.