作業ツリーにいくつかのファイルが表示されることがあります。それらは追跡されず、
破棄してステージングしたくないファイルもあれば、ステージングしたいファイルもあります。
私の質問は次のとおりです。保持したいファイルと無視したいファイルを段階的に選択するために使用できる何らかの対話コマンドはありますか?
私の質問が明確であることを願っています。
作業ツリーにいくつかのファイルが表示されることがあります。それらは追跡されず、
破棄してステージングしたくないファイルもあれば、ステージングしたいファイルもあります。
私の質問は次のとおりです。保持したいファイルと無視したいファイルを段階的に選択するために使用できる何らかの対話コマンドはありますか?
私の質問が明確であることを願っています。
git add -i
ファイルをインタラクティブにステージングするためにいじることができます。
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# a
# b
# c
# d
nothing added to commit but untracked files present (use "git add" to track)
$ git add -i
staged unstaged path
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> a
1: a
2: b
3: c
4: d
Add untracked>> 2
1: a
* 2: b
3: c
4: d
Add untracked>> 4
1: a
* 2: b
3: c
* 4: d
Add untracked>>
added 2 paths
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> s
staged unstaged path
1: +0/-0 nothing b
2: +0/-0 nothing d
*** Commands ***
1: status 2: update 3: revert 4: add untracked
5: patch 6: diff 7: quit 8: help
What now> q
Bye.
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
# new file: d
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# a
# c
少しトピックから外れていますが、この情報を追加したかっただけです:
git add -i
上記の使用例よりもはるかに強力です。たとえば、ファイルの変更の一部のみを追加する場合は、patch
モードを使用できます。
私はパッチモードを何度も使用しましたが、1 つのファイルの変更を 2 つの別々のコミットに分割したいが、手動でファイルのコピーを作成したくないので、元のファイルを編集したくないことに気づきました。 、ステージング、コミットし、次のコミットのために同じことを繰り返します。
パッチ モードでは、git は変更を小さなパッチに分割し、それらのハンクのみをステージングするオプションを提供します。git が最適なハンクを自動的に提供しない場合は、エディター プロンプトで手動でハンクを分解できます。
git add -i -A
追跡されていないファイルのインタラクティブなプロンプトを取得するために使用できます。4: [a]dd untracked
番号またはショートカット文字を選択して、リストに含めるファイルを切り替えます。
「2 つのリポジトリを比較する」の意味がわかりません。任意のリポジトリを使用git fetch
して、他のリポジトリのコンテンツを追加し、結果のリビジョン (作業リポジトリの場合は変更されたファイル) を と比較できますgit diff
。