64

2つの簡潔な質問があります。

  • ステージングせずにファイルを追跡するにはどうすればよいですか?
  • 追跡を解除せずにファイルをコミット用にステージング解除するにはどうすればよいですか?

注: ファイルを追跡するために最初のコミットを実行し、そこからファイルを追跡して開始できることを知っています。しかし、私が上で求めていることを具体的に行うことは可能ですか?

使用しようとしましgit add -N <expr>たが、ファイルを追跡し、コミット用に追加します。

PS C:\> git add -N fileA
PS C:\> git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   fileA
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   README.md
#       modified:   composer.lock
#       modified:   fileA
#

ステージングを行ったり、ステージングを解除しgit reset HEAD fileAたりgit rm --cached fileAするだけでなく、ファイルの追跡を解除した場合。このコマンドgit rm fileAは、ファイルをフィジカルに削除するフラグ-fを使用することを提案します。

それで、ステージングすることはできますが、ステージングすることはできません。また、ファイルをアンステージすることはできますが、アントラックすることはできませんか?

4

2 に答える 2

57

更新(2015年5月)

使用しようとしましgit add -N <expr>たが、ファイルを追跡し、コミット用に追加します。

これは、次のGit 2.5(2015年第2四半期)には当てはまりません。「使用後にファイルがコミットに参加しない
」を参照してください。git add -N


元の回答(2013年3月)

追跡を解除せずにファイルをコミット用にステージング解除するにはどうすればよいですか?

これが公式の方法です。

git reset HEAD fileA

ただし、これは新しいファイルであるため、追跡も解除します(以前のコミットで参照せずに、インデックスから削除します)。

ファイルの追跡を開始するということは、ファイルをインデックス(ステージ)またはコミットに入れることを意味します。

それらを追加/コミットするために、それらのファイルのブランチを作成することをお勧めします。「GITのコンテキストでの追跡されたファイルと追跡されていないファイルとは
」を参照してください。

  • 追跡されるファイルは、最後のスナップショットにあったファイルです。それらは、変更されていない、変更されている、またはステージングされている可能性があります。
  • 追跡されていないファイルは他のすべてです—最後のスナップショットになく、ステージング領域(インデックス)にない作業ディレクトリ内のファイル

つまり、新しいファイルの場合、ステージングされていないということは、それを追跡解除することを意味します。

gitで追跡されたファイル
(出典:Pro Git Book、2.2 Git Basics-リポジトリへの変更の記録) (コメントの更新/修正を
ありがとう、louisfischer

git-ファイルが(シェルの終了コードによって)git追跡されているかどうかを確認する方法」も参照してください。

于 2013-03-27T06:40:44.887 に答える
1

ですべてのファイルを追跡しますgit add。コミットするすべての変更をコミットし、リモートにプッシュします。次に、新しいファイルを。で隠しますgit stash。ファイルは追跡されますが、コミットされません。したがって、この例では、fileAのステージングを解除することから始めます。次に、を実行git add README.mdgit add composer.lockます。git commit -m "Committing fun stuff."。ここで、ステージングせずに新しいファイルを追跡する必要があるため、単に。をgit add fileA続けgit stashます。fileAをコミットする準備ができたら、実行git stash popしてリモートにコミット/プッシュできます。

于 2014-05-15T15:52:34.053 に答える