23

gitで、すでにインデックスに含まれているファイルへの変更のみが追加されるようにインデックスを変更する(簡単な)方法はありますか?ちょっと複雑に聞こえますが、私が達成したいのは単純です。

私のインデックスが次のようになっているとしましょう(わずかにgit status出力が削除されています):

# Changes to be committed:
#       modified:   A
#       modified:   B
#
# Changed but not updated:
#       modified:   B
#       modified:   C
#
# Untracked files:
#       D

いくつかの変更Bはインデックスにあり、いくつかはそうではありません。 Cまったく上演されていません。

B追加せずにインデックスを更新(ステージングされていない変更をステージング)するにはどうすればよいCですか?

つまり、インデックスを次のようにしたいと思います。

# Changes to be committed:
#       modified:   A
#       modified:   B
#
# Changed but not updated:
#       modified:   C
#
# Untracked files:
#       D

この単純なケースでは、もちろん単純なケースで実現できますがgit add B、一般的なケースに簡単な答えがあるかどうかを知りたいと思います。試しgit add --refreshましたが、正しく理解していれば、統計情報のみが更新されます。

4

3 に答える 3

30

次のコマンドは、まだステージングされていないBの他の変更を含むようにインデックスを更新します。

git update-index --again
于 2012-04-04T16:56:05.380 に答える
1

これを行うための完全に簡単な方法はわかりませんが、次のようになります。

git status --porcelain

ファイルB(およびBのみ)を状態「MM」として表示するため、次のようになります。

git status --porcelain | grep ^MM | cut -d' ' -f 2

そのようなファイルのリストを作成します。

ただし、Aを「再追加」しても問題はありません。

を使用することもできますgit diff-index --cached --name-status HEAD。(gitが古すぎて使用できない場合は、これが必要になることがありますgit status --porcelain。)

于 2012-04-04T08:18:18.027 に答える
0

の代わりに--refresh、次を使用する必要があります--update

git add --update

この後、次のgit statusようになります。

# Changes to be committed:
#       modified:   A
#       modified:   B
#       modified:   C
#
# Untracked files:
#       D
于 2021-12-28T22:58:51.753 に答える