1

次のようなコードがある場合

/**
 * blah blah blah
 */
...some codes...
/**
 * yadda yadda

そして、私は追加します

/**
 * blah blah blah
 */
...some codes...
/**
 * blah blah blah
 */
...some codes...

「yadda yadda」コマネットの前に、git diff は私が追加したことを示します:

 +  * blah blah blah
 +  */
 +  ...some codes...
 + /**

git に「それは正しくありません。もう一度やり直してください」と伝える方法はありますか? 私は知って--patienceいますが、それは git diff のためだけのようで、私の人生では正しく動作しません。それほど重要ではないことはわかっていますが、これにより、特に GitHub での差分とコミット ログがよりクリーンになります。

4

1 に答える 1

5

Git がリポジトリにファイルを保存する方法は、ファイル全体を基準としています。2 つのバージョンの違いを求めると、Git は両方の完全なファイルをリポジトリから取得し1、それらの間の差分アルゴリズムを実行します。他のソース管理システムとは異なり、Git はコミット時にファイル間の差異を計算または保存しません。

この方法には、必要なときに差分の動作を簡単に変更できるという利点があります。たとえば--patience、異なる diff アルゴリズムを使用して 2 つのファイル間の (おそらく) より適切なパッチを決定するフラグを見てきました。

ファイルが Git リポジトリに保存される方法が原因で、Git にカスタム diff アライメントを追跡するように指示することはできません。

  1. Git リポジトリの奥深く、.packファイル内で、Git はさまざまなデルタ エンコーディング メソッドを使用して、類似したオブジェクト間の違いを保存し、リポジトリのサイズを縮小します。ただし、これはファイル ストレージよりも低いレベルにあり、ソース ファイル間の実際の差分ではありません。
于 2013-08-08T01:23:37.310 に答える