3

作業ツリー ファイルの状態を変更せずに、1 つの (テキスト) ファイルのインデックスを変更したいと考えています。これは可能ですか?

4

3 に答える 3

1

はい、を使用して特定のパスでblobを明示的にステージングできますgit update-index

git update-index --cacheinfo 100644 <sha1-of-blob> path/in/repo

--addパスがブランチの新しいファイルである場合にも使用する必要があります。

ステージングするファイルがgitリポジトリにまだ存在しないblobである場合は、次のようにしてgitリポジトリに新しいblobを保存できますgit hash-object

blobid=$(command_that_creates_output | git hash-object -w --stdin)

また

blobid=$(git hash-object -w /path/not/necessarily/in/repository)

次に、上記のようにブロブをステージングできます。

git update-index --cacheinfo 100644 blobid path/in/repo
于 2011-12-21T16:23:07.533 に答える
1

はい、任意の git レベルで --work-tree オプションを使用できます (これは実際には正しくありません。任意のコマンドで動作するはずですが、エッジ ケースがあります)。

git show HEAD:path/to/your/file.txt > /some/other/place/file.txt
# modify the file in /some/other/place/file.txt
git --work-tree=/some/other/place add /some/other/place/file.txt
于 2011-12-20T18:42:17.103 に答える
1

「作業ディレクトリを変更せずにインデックス内のファイルを変更する」という別の方法は、インデックスのみにパッチを適用することです。これは、多くの場合、GUI git クライアントが特定のファイルから選択された行のみをステージングする方法です。

(必要に応じて)そのファイルのインデックスから変更をクリアすることから始めます。

git reset path/to/file

次に、完全なパッチを抽出します

git diff path/to/file > /path/to/tmpfile

パッチ ファイルを編集して、適用する変更のみを含め、編集したパッチのみを適用します。

git apply --cached /path/to/tmpfile

見る:

git help apply
于 2012-03-28T09:51:50.187 に答える