web-dev-qa-db-ja.com

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

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の結果は変わりません。

150
Synesso

私はここでWindowsのアクセス許可を変更する方法のソリューションも見つけました: http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html

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

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

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.
93
Corey Henderson

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

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

すべての.shファイルを実行可能としてマークします。その後は、git commitするだけです。

28
Benoit Blanchon

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に表示されるファイルモードの変更(通常は誤検知)を無視するよう指示します。

9
skiphoppy

Ubuntuでファイルのアクセス許可を変更することで修正し、コミットし、プッシュし、すべてOKです。 Windows/NTFS上のmsysgitでは動作しないようです。

5
Synesso

最初に権限を確認してください。

git ls-files --stage

次に、権限を変更します

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

次に、アクセス許可を再確認します。

git ls-files --stage

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

windows PCを使用しているが、Linuxマシンに展開している場合。最初に以下のコマンドを実行して、Linuxマシンで実行できるようにします。

dos2unix scriptname.ext scriptname.ext

1