1

IP.Boardという名前のソフトウェアの新しいバージョンで行われたいくつかの変更を調べようとしています。ただし、ローカルリポジトリでバージョン3.4.2と3.4.3の間でgit showを実行すると、バージョン番号が更新されたばかりのファイルがたくさんあります。

このような:

- * IP.Board v3.4.2
+ * IP.Board v3.4.3

これが唯一の変更であるファイルを無視できる簡単な方法はありますか?彼らのバージョンビルダーは、含まれているすべてのファイルのバージョン番号を自動的に更新すると思います。

4

3 に答える 3

4

これは信じられないほど堅牢ではありませんが、おそらく十分です。入力.git/config

[diff "remove-rev"]
    textconv=sed '/IP.Board v[0-9]*\\.[0-9]*\\.[0-9]*/d'

そして、.gitattributesまたは.git/info/attributesに次のように入力します。

* diff=remove-rev

これで、 が実行されるたびgit-diffに、gitdiffcore がどのファイル ペアが異なるかを判断する前に、sed スクリプトがファイルに適用されます。sedニーズに合わせてコマンドを微調整する必要があるかもしれませんが、これは役立つはずです。

于 2013-02-26T20:09:01.673 に答える
0

いいえ。gitはファイルのコンテンツのハッシュを使用してファイルのコンテンツを追跡します。バージョンが変更されると、コンテンツも変更され、ハッシュも変更されます。

于 2013-02-26T19:33:15.877 に答える
0

いいえ、できません。私はこれがあなたが望むものではないことを知っていますが、私は問題を抱えて生きることを提案します。

はい、それは最悪です。ただし、gitレベルでそれを解決する(または頭痛を軽減する)ことを試みることは、問題をより長く生きることを保証するだけです。事実、これはビルドを設定する際の不適切な設計選択の結果です。

ファイルは無視できますが、最初にgitから削除する必要があります。

  1. 削除しようとしているファイルをバックアップします
  2. git rm <files>
  3. 専念
  4. ファイルを復元します。
  5. .gitignoreを編集し、gitが作業ツリーがクリーンであると言うまで、復元されたファイルを追加します。

それがうまくいかない場合は、これらのファイルを管理するプロセスを可能な限り自動化するコミットフックとして機能するスクリプトの組み合わせを使用するのが最善の方法です。それでも苦痛はありますが、それほどではありません。繰り返しになりますが、この道をたどらないことをお勧めします。

更新:これらのバージョン番号を自分で変更する予定がない場合は、フィルター(2つのコマンド(smudgeとclean)を実行するスクリプト)を使用することもできます。コマンドが汚れている場合、スクリプトは、Williamが指摘したのと同様に、バージョン番号の行を削除します。コマンドがクリーンになると、スクリプトはに行を追加し直します。

これとWilliamのアプローチの主な違いは、これを使用すると、通常のテキストエディターでファイルを開いても、バージョン行が表示されないことです。これは、このアプローチでは実際にファイルのコンテンツが変更されるためです。gitのビューではありません。それ。したがって、これはあなたが望むものではないかもしれません-最も安全なアプローチは、Gitが違いを見る方法を変えているWilliamが提案したものです。

これらの両方のアプローチの詳細については、こちらをご覧ください。

于 2013-02-26T19:51:51.513 に答える