1. ホーム
  2. ギット

[解決済み】gitで新しいファイルの一部だけをステージする方法は?

2022-04-02 01:19:51

質問

I git add --interactive . 今では、私の毎日のワークフローの一部になっています。

問題は、追跡されていないファイルでは動作しないようです。私がやりたいのは、新しいファイルを追跡し、その一部だけを追加することです。つまり、この新しいファイルの一部はまだステージングする準備ができていません。

例えば、git add -i では、patch オプションを選択し、さらに個々の hunk を編集して、新しいコードの一部をステージングし、デバッグコードのコメントをステージングしないままにすることができます。この方法で作業すると、現在作業中のメガパッチのどの部分にまだ作業が必要なのかが一目瞭然になるので、とても気に入っています。

残念ながら、追跡されていないファイルでは、同じことができないようです。ファイル全体をステージにするか、何もステージにしないかのどちらかです。私が使ってきた回避策は、新しいファイルが空のときにステージング、あるいはコミットし、それから通常の方法で個々の変更をステージングすることです。しかし、この解決策は汚いハックのように感じられ、私が忘れたり、気が変わったりすると、必要以上に多くの問題を引き起こします。

そこで質問ですが、新しいファイルの一部だけをステージングして、この新しいファイルが追跡されるようにしつつ、そのコンテンツの全体または一部をステージングしないようにするにはどうしたらよいでしょうか?

解決方法は?

あれ、これって update-indexhash-object ビジネスが複雑になりすぎているような気がします。 代わりにこんなのはどうでしょう。

git add -N new_file
git add -i  # or 'git add -p' if you prefer

から git help add :

-N, --intent-to-add
    Record only the fact that the path will be added later.  An entry
    for the path is placed in the index with no content.  This is useful
    for, among other things, showing the unstaged content of such files
    with git diff and committing them with git commit -a.