128

を実行するgit add -pと、git が新しく作成されたファイルを選択するハンクとして選択する方法はありますか??

したがって、という名前の新しいファイルを作成してfoo.javagit add -p を実行すると、そのファイルのコンテンツをインデックスに追加するように選択できません。

4

6 に答える 6

125

新しいファイル (追跡されていないファイル)を試してみるとgit add -p someNewFile.txt、git は単純に出力No changes.して停止しました。最初に新しいファイルを追跡するつもりであることを git に伝える必要がありました。

git add -N someNewFile.txt
git add -p

ただし、ファイルは追跡されていないため、分割できない 1 つの巨大な塊として表示されます (すべてが新しいためです!)。そのため、ハンクをより小さなビットに編集する必要がありました。これに慣れていない場合は、このリファレンスを参照して開始してください。

更新 - ハンク編集情報 上記の参照がなくなった場合に備えて、これを更新したかったのです。新しいファイルは追跡git add -pされていないため、ファイル内のすべての行が 1 つのハンクの新しい行として表示されます。次に、そのハンクをどうするかを尋ねられ、次のプロンプトが表示されます。

Stage this hunk [y,n,q,a,d,/,e,?]?

ハンク全体 (したがって、ファイル全体。その場合に使用する理由がわからないため) をコミットしたくないと仮定すると、編集したいことを git に伝えるgit add -pオプションを指定する必要があります。eハンク。

ハンクを編集することを git に伝えると、選択したエディターにドロップされ、変更を加えることができます。すべての行の先頭に a+を付ける必要があり、git#にはファイルの末尾にいくつかの説明コメント (先頭に a を付ける) があります。ファイルの最初のコミットで不要な行を削除するだけです。次に、エディターを保存して終了します。

Git のハンク オプションに関する Git の説明:

y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
于 2013-07-31T20:38:04.380 に答える
6

--cachedフラグを使用する非常によく似たアプローチもあります...

1)追加したファイルと同じように、ステージングされていない変更をステージングされたものに変えます。

git add edited-file.txt
git add new-file.txt
git add directory-of-changes/

2) 差分を見てください (注: 編集と新しいファイルの両方を含めることができます)。

git diff --cached

3)パッチを作成します。

git diff --cached > my_patch_file.patch
于 2016-09-16T20:52:48.623 に答える