2

GIT が javascript ファイルと ruby​​ ファイルにリバース パッチを適用しないのに、php ファイルには適用する理由を理解しようとしています。私の手順は次のとおりです。

...modifying some php, ruby and js files...

git stash#stash への変更の保存

git stash apply#それらを適用する

git stash show -p | git apply -R#リバースパッチ

それは正常に動作し、隠した変更を適用解除しますが、Ruby や JavaScript ではなく、php ファイルに対してのみ適用されます。すべてのファイル (php を含む) にはCRLF行末があります。LF行末のあるファイルを試したとき、問題はまったくありませんでしたが、CRLF行の場合に特定のファイルタイプでのみ機能するのはなぜなのか、まだ疑問に思っています。

ご協力いただきありがとうございます!

4

1 に答える 1

1

私は問題を発見しました。私の解決策は他の人にとって役立つと思います。実際、Subversion から Git への最初の移行後に発生していました。問題は、プロジェクト内のファイルの行末が異なるため、ファイルタイプに依存しないことでした。Git がチェックアウト中にそれらすべてを 1 つの形式に変換しようとしたとき、それは正しくなく、場合によってCRLFは壊れていました。私が見つけた解決策:

git config --global core.autocrlf input# OSX または Linux でこの設定を行います

git config --global core.autocrlf true# Windows ではこの設定を行います

git rm --cached -r .

git add .

git commit -m "Line endings fix. Now all lines are in LF format"

git reset --hard

その後、すべてのファイルを 1 つの形式にしたクリーンなブランチができました。うまくいけば、これは誰かを助けるでしょう。

于 2012-11-01T11:18:54.623 に答える