881

なんらかの理由で、最初に自分の git プロジェクトのリポジトリからプルを行ったとき、作業コピーに大量のファイルがありましたが、それらには識別可能な変更が加えられていませんが、私のunstaged changes領域には表示され続けています。

私は Windows XP で Git Gui を使用しています。ファイルを調べて、何が変更されたかを確認します。私が見るのは次のとおりです。

old mode 100755  
new mode 100644  

これが何を意味するか知っている人はいますか?

ステージングされていない変更のリストからこれらのファイルを削除するにはどうすればよいですか? (最近編集​​してコミットしたいファイルを選択するためだけに、何百ものファイルを調べなければならないのは非常に面倒です)。

4

15 に答える 15

1563

それは私にはUNIXファイル許可モードのように見えます(755= rwxr-xr-x644= rw-r--r--)-古いモードには +x (実行可能)フラグが含まれていましたが、新しいモードには含まれていません。

この msysgit issue の返信では、core.filemode を false に設定して問題を解決することが提案されています。

git config core.filemode false
于 2009-08-10T22:34:45.897 に答える
110

core.filemodefalse に設定しても機能しますが、 の設定が の設定によって上書きされていないことを確認して~/.gitconfigください.git/config

于 2010-06-04T07:03:22.807 に答える
9

これは私のために働いた:

git ls-files -m | xargs -L 1 chmod 644
于 2020-10-18T18:48:02.630 に答える
2

git reset --hard HEAD を試して、リポジトリを予想されるデフォルト状態にリセットできます。

于 2009-08-11T03:38:11.367 に答える
1

次のコマンドを使用して、ファイル モードを元に戻すことができます。 git add --chmod=+x -- filename 次に、ブランチにコミットします。

于 2019-02-28T16:29:53.497 に答える
0

ブランチをマスターと比較するときに、この問題に遭遇しました。ブランチが master と同一であると予想していたときに、Git は 1 つの「モード」エラーを返しました。ファイルを削除してから、マスターを再度マージすることで修正しました。

最初に差分を実行しました:

git checkout my-branch
git diff master

これは以下を返しました:

diff --git a/bin/script.sh b/bin/script.sh
old mode 100755
new mode 100644

次に、次を実行して修正しました。

rm bin/script.sh
git merge -X theirs master

この後、git diffmy-branch と master の違いは返されませんでした。

于 2018-10-12T01:14:18.973 に答える