1

私はそれだけを見つけました:

// レポ内、インデックス内、コンテンツ差分 => 変更 // インデックス内、作業ディレクトリ内、コンテンツが異なる => 変更済み

でも違いが分からない?

4

3 に答える 3

1

クラス IndexDiff のゲッターの javadoc を見てください。

/**
 * @return list of files changed from tree to index
 */
public Set<String> getChanged()

これらは、HEAD が指すツリー (ほとんどの場合、現在のブランチの先端) と Git インデックスの間で異なるファイルです。

/**
 * @return list of files modified on disk relative to the index
 */
public Set<String> getModified()

これらは、ディスク上のファイル (別名作業ツリー) と Git インデックスの間で異なるファイルです。

于 2012-08-23T18:22:46.887 に答える
1

コマンド javadoc については、あまり詳しく説明していません。git status 単体テストを使用して、 git statusが実際にどのように機能するかを理解しました。

要するに:

modified - 既存のファイルをインデックスに追加せずに変更した場合の結果

changed - 既存のファイルを変更して 'git add ...' を呼び出すと得られるもの

于 2015-11-06T21:49:55.190 に答える
0

返事がなかったので、始めましょう。

まず、次の間に違いがあると思います。

  • 作業ディレクトリ:これは、作業中のファイルシステムです。ファイルを変更すると、ファイルシステム上で変更されます。通常、それはそれを最新に保つためのOSの仕事です。

  • インデックス:Gitが何が起こっているかを知るために使用するもの。これが、何が起こったかを追跡するためのGitの内部メカニズムです。私にとっては少しあいまいですが、ファイルシステムの変更、追加した変更(git add [-u]を使用)、またはコミットした変更(またはそれらすべて)を認識している必要があります。

  • リポジトリ/ローカルコピー:ファイルのバージョンが異なる可能性のあるさまざまな場所。Gitはハッシュを使用してそれらに関する情報を保持します(ただし、その質問をする場合はハッシュについて知っておく必要があります)

Gitの問題はレポのサイズを処理することだと知っています。レポのサイズがかなり大きいと遅くなります。より正確には、彼らのチームは、ファイルシステムに関するGitの知識を更新するためにlstat呼び出しの量を減らすことに取り組んでいます(つまり、Gitは通常、作業ディレクトリ上のファイルを変更するときにそれを知っています)

何を見ているのかわかりませんが、git-update-index(git addを実行すると呼び出されると思います)、「Git lstat」、またはこの種のものをgoogleで検索できます。

そして、申し訳ありませんが、あなたの質問は本当に明確ではありません:略語が多すぎて行が少なすぎます。'content diff'は、コンテンツに対してdiffコマンドを実行したことを意味しますか、それともコンテンツが異なりますか?シンボルが明確ではありません。おそらくアイテムをリストするときに//を使用し、=>結果などを表すのはなぜですか。回答する前にドキュメントを検索するのに時間がかかります。明確な質問を書くのに時間をかけてください。

これがお役に立てば幸いです

ヴィンセント

于 2012-08-02T08:23:18.037 に答える