5

私は .gitattributes を読み、いくつかのファイルの行末を変更しないように git に指示しました。問題は、それらがすでにコミットされていることです。愚かで賢い git は、実行したことを元に戻したくありません。ファイルを削除して再度追加しても効果はありません (変更が最適化されます)。現在、リポジトリからプルするたびに、これらのファイルを手動で再コピーする必要があります。

私に何ができる?これをバグとして報告し、修正を待ちますか? どういうわけかコミットオブジェクトを削除して、gitにそれらを再作成させますか? 後者は難しい/危険に思えます。

編集:リポジトリからファイルを完全に削除するためのGitHub でこの素敵なガイドを見つけました。問題は、履歴全体から削除したくないということです。私はしなければなりませんか、それとも最後のコミットに対してのみ行うことができますか? 最後のコミットでこれを行うと、Git は再検索して再度最適化しますか?

4

2 に答える 2

1

より深く掘り下げたので (元の説明は少しずれていました)、問題を再度説明し、回避策を説明します。

私の Windows マシンの問題ファイルの末尾は LF です。それらを beanstalkapp.com にプッシュしたところ、(Git の設定に関係なく予想されるように) LF の末尾が保持されていました。別の Windows マシンでそれらをプルすると、CRLF に変更されました。それらをバイナリとして扱うために .gitattributes を追加しましたが、このファイルを他の Win マシンでプルしても LF としてチェックアウトされませんでした。

他の Win 上の Git は、新しい .gitattributes を検出したときにそれらを適切に再チェックする必要がありますが、そうではありませんでした。また、あるコミットで削除し、次のコミットで再度追加しますが、1 ステップでプッシュして 1 ステップでプルしても機能しませんでした。

それらがすべて削除されたコミットをプルする必要がありました。その後、それらが再度追加されたときに再度プルする必要がありました。これにより、他の Win マシンがそれらを正しくチェックアウトできるようになりました。私は、他の Win マシンでそれらを削除して、リセット --hard を実行しようとはしませんでした。

.gitattributes をプルする動作がどうあるべきかについて、メーリング リストに書き込みます。

于 2012-09-01T22:31:21.150 に答える
-1

1)履歴を最後の正しいコミットにリセットします(警告:これは、あなたまたは他の人がプロジェクトで新しい変更を行っていない場合にのみ行ってください

.gitattributes2)正しい値に更新する

3) コミットする

--force4)属性で押す。

于 2012-09-01T13:23:05.313 に答える