web-dev-qa-db-ja.com

git add -pに分割オプションがないのはなぜですか?

git add -pおよびsplitオプションを使用して、ハンクを小さいものに分割しようとしていますが、ファイル全体が1つのハンクとして表示され、分割できません。

  1. 編集はできますが、行を削除するとパッチが失敗します。
  2. git help addは分割するべきだったと言っていますが、それを使用したことを思い出しましたが、現在の例ではオプションがプロンプトに表示されません。
  3. オプションを選択すると、ヘルプが出力され、分割するsを選択できると表示されます:-[

Gitバージョン:1.9.1。 Xubuntu 14、oh-my-zsh。塊は1行ではなく、複数行です。それはなぜでしょうか?

より多くのデータで編集された、ここにコンソールログがあります:

+last line of long text 
Stage this hunk [y,n,q,a,d,/,e,?]? s
y - stage this hunk
n - do not stage this hunk
q - quit; do not stage this hunk nor any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk nor 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

これが機能しない理由は、ハンクがすでにgitが自動的に取得するのと同じくらい小さいためです。分割は、変更された行をgitがそれらが一緒に属していると想定するのに十分近くに分離する変更されていない行がある場合にのみ機能します。

あなたが望むものを達成するために、あなたはする必要があります 手動でパッチを編集する

27
Jeff Puckett

_git add -p_に分割オプションがないのはなぜですか?

Git 2.17(2018年第2四半期)では、この質問をする必要はありません。単一キーのヘルプが、有効になっているキーに対してのみ提供されるようになりました (たとえば、ハンクが1つしかない場合、「_/_」のヘルプは表示されません)。

commit 4bdd6e7commit 88f6ffccommit 01a6966 (2018年2月13日)を参照 Phillip Wood(phillipwood による。
Junio C Hamano-gitster- in commit 60f8b89 、2018年3月6日)

最初:

_add -p_:エラーメッセージを改善

ユーザーが現在アクティブではないキーを押した場合は、すべてのキーを一覧表示するのではなく、なぜアクティブでないのかを説明します。一部のキーについてはすでにこれが行われ、このパッチはまだ処理されていないものに対しても同じことを行います。

そして:

_add -p_:アクティブなキーのヘルプのみを表示

ユーザーが_add -p_が予期していなかったキーを押すと、キーバインディングのリストが出力されます。
プロンプトにはアクティブなバインディングのみが一覧表示されますが、すべてのバインディングについてヘルプが出力されました。

プロンプトのキーのリストを使用してヘルプをフィルタリングすることにより、これを修正します。
キーのリストはすでに呼び出し元によってhelp_patch_cmd()に渡されているため、呼び出しサイトに変更を加える必要はありません。

3
VonC