git add -p
私は完全に大好きですgit stash
が、次の問題が発生することがあります。これは、次の一連のコマンドによって再現されます。
git add -p my_file
:次に、gitが提案する分割が私に適していないため、(を使用して)手動でハンクを編集しますe
git stash --keep-index
:それから私はいくつかのテストを行います、そしてテストが合格した場合私はコミットしませんgit stash pop
:問題が発生しました:ファイルmy_file
は競合していると見なされ、gitは編集したハンクを完全に混乱させたため、ファイルを編集し、不要なマージマークを削除して、実行してから実行する必要がありgit add my_file
ますgit reset HEAD
これはハンクを手動で編集するときにのみ発生するため、私は困惑しています。これがどのように違いを生むのか、私にはわかりません。
問題を再現するには:
touch newfile
git add newfile
git commit -m 'newfile'
- ファイルに2行追加します
git add -p newfile
- ハンクを編集し(
e
)、ハンクの行の1つを削除してから、git add(q
)を終了します。 git stash --keep-index
git stash pop
これで、ファイルnewfile
はマージされていない状態になります。繰り返しになりますが、この問題は手動で編集されたハンクでのみ発生することに注意してください。ハンクを手動で編集しなくても、上記のコマンドに問題はありません。
ちなみに、ファイルの前の状態は第3段階(git show :3:newfile
)にあり、前に段階化されたバージョンは第2段階(git show :2:newfile
)にあります。だから、私はいくつかのgit black magicによって、このインデックスに2番目のステージを入れ、作業リポジトリに3番目のステージを入れることができました...しかし、それを行う方法がわからないので、手作業で行います。:-(