したい削除ファイルは"旧モード100755新しいモード100644"からunstaged変Git?
質問
何らかの理由で私が最初っから引のリポジトリのためのgitプロジェクトの鉱山
俺はトンファイルを一緒にそれをコピーして認識できる変更は、さま、ありがとうございました撮影中に体調不良を訴っ unstaged changes
ます。
を使用していGit Gui Windows xp*環境で、行った時に、ファイルに変更しました。すべての私見です:
old mode 100755
new mode 100644
なんだろうけど、日本人ようです。
方法を教えてくださいこれらのファイルのマイリストのunstaged。(あんて100以上のファイルだけを選び出してファイルって編集したいコミット).
解決
私にはUNIXファイルのパーミッションモードのように見えること(755
= rwxr-xr-x
、644
= rw-r--r--
)は - 古いモードが+ X(実行)フラグを含め、新しいモードにはありません。
このmsysgit問題の回答ではfalseにcore.filemodeを設定することを示唆する問題を取り除くために:
git config core.filemode false
他のヒント
falseにcore.filemode
を設定する作業を行いますが、~/.gitconfig
の設定が.git/config
のもので上書きされていないことを確認します。
私は、この問題が発生しました。問題は、所有者とパーミッションを新しいものに古いドライブ/マシンから変更という事実から生じます。長いとそれの短いです、(このスーパーユーザ回答するにおかげで)物事をまっすぐに次のコマンドを実行します。
sudo chmod -R -x . # remove the executable bit from all files
以前のコマンドは、実際のgit diffが報告された相違を解決しますが、ディレクトリの一覧を表示するあなたの能力を取り消すますので、ls ./
はls: .: Permission denied
で失敗します。これを修正するには:
sudo chmod -R +X . # add the executable bit only for directories
悪いニュースは、あなたがそのような.sh
スクリプトとして実行可能ファイルを保存しておきたいすべてのファイルを、持っている場合は、あなたがそれらを元に戻す必要がありますということです。あなたはファイルごとに、次のコマンドでそれを行うことができます:
chmod +x ./build.sh # where build.sh is the file you want to make executable again
ディレクトリのいくつかのパーミッションを変更したようです。私はそれを復元するには、次の手順を行いました。
$ git diff > backup-diff.txt ### in case you have some other code changes
$ git checkout .
あなたは試みることができます gitが--hard HEADをリセット 予想されるデフォルトの状態にレポをリセットします。
あなたが引いたときにこれが起こると、すべてのファイルは、リモートリポジトリに実行しました。彼らは、実行可能再び再び正常に戻ってすべてを設定します作ります。
chmod +x <yourfile> //For one file
chmod +x folder/* // For files in a folder
あなたがする必要があるかもしれません。
chmod -x <file> // Removes execute bit
の代わりに、実行可能なように設定されていないし、それが原因で上記の動作を変更したファイルのため。そこにこれを行うには良い方法があるが、これは単に非常に迅速かつ汚い修正されます。
私は同じ問題に直面しています。そして、これは私の人生を保存します。 https://gist.github.com/jtdp/5443498する
git diff -p -R --no-color \
| grep -E "^(diff|(old|new) mode)" --color=never \
| git apply
通常の場合、レポ-レートがクローニングWindowsとLinux/Unixます。
私gitを無視するfilemodeの変化、ここにはいくつかの方法が考えられてい:
Configのみに現在のレポ-レート:
git config core.filemode false
Configグ:
git config --global core.filemode false
追加の~/.gitconfig:
[core] filemode = false
だけを選択します。
私は、変更権限を持つ一つだけ面倒なファイルを持っていました。
個別にロールバックするには、私はちょうどrm <file>
を手動で削除してから新しいコピーを引っ張るためにチェックアウトをしました。
幸いにも、私はまだそれを上演していませんでした。
私はgit reset -- <file>
を実行する前にgit checkout -- <file>
を実行している可能性があった場合
私はこの問題に走りました。私は私の枝がマスターと同一であることが予想されるとき、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 diff
は私の分岐とマスターの間には違いが返されません。
あなたは戻ってファイルモードを変更するには、次のコマンドを使用することができます。
git add --chmod=+x -- filename
そして、ブランチにコミットします。