Невозможно удалить линию из добавляемой в промежуточную область - PullRequest
0 голосов
/ 14 июля 2020

У меня есть отредактированный файл в моем репозитории git, и я хочу добавить некоторые изменения в промежуточную область, используя git add -p.

Есть нерасщепляемый кусок, который содержит две добавленные строки который я хочу добавить вторым, но не первым. Поэтому я попытался удалить строку, которую не хочу обрабатывать, отредактировав кусок:

# Manual hunk edit mode -- see bottom for a quick guide.
@@ -1,5 +2,7 @@
 mod vec2;
 #[cfg(test)]
 mod vec2_tests;
 pub use self::vec2::Vec2;
+pub use self::vec3::Vec3;
+use std::ops::{Add, AddAssign, Sub, SubAssign, Mul, MulAssign};

# ---
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.

Я удалил первую добавленную строку: +pub use self::vec3::Vec3;, сохранил и выйду из редактора. Git сообщает мне:

ошибка: сбой патча: src / geo / mod.rs: 1

ошибка: src / geo / mod.rs: патч не применяется

Я не понимаю, почему это не работает. Что здесь не так? Как я могу поставить вторую строку, но не первую?

1 Ответ

0 голосов
/ 14 июля 2020

Я воспроизводю ту же ошибку локально:

  • если в файле рабочего дерева есть лишняя первая строка, а затем кусок, достаточно близко, чтобы начальный add -p предлагал мне stage оба изменения сразу,
  • , и я запускаю add -p,
  • и сначала говорю [s]plit кусок,
  • и добавляю или отбрасываю первую строку ( оба приводят к одной и той же ошибке),
  • и запрашивают [e]dit второй кусок:

Я даже не могу применить предложенный патч (например: сохранение и выход из редактора без модификаций выдает ошибку patch does not apply).

Думаю, первое условие вызывает сдвиг диапазона строк, и я не мог определить рабочую комбинацию range + diff hunk.

I также еще не выяснил где хранится частично отредактированный файл.

В качестве обходного пути:

вы можете сохранить свою текущую версию в фиксации или sh и отредактировать файл для вашего удобства.

Временное решение, достаточно близкое к на самом деле запускать git add -p вы намереваетесь:

  • запускать git add -p, но не пытайтесь edit ломоть, если это подчасть split ханка , просто add те
  • запустить git stash --keep-index -- the/file (или git stash -k -- the/file)
  • отредактируйте файл, чтобы удалить лишние строки, которые были включены выше
  • добавить и зафиксировать это новый файл
  • , затем либо запустите:
    • git stash pop и исправьте конфликты (вы хотите сохранить their версию)
    • git show stash@{0}:the/file > the/file (дамп сохраненной версии в sta sh на диске, без выполнения каких-либо действий слияния)

Учитывая диапазоны строк в вашем вопросе: я предполагаю, что вас сначала попросили «разделить», а затем «отредактировать» второй кусок.

Вы можете попробовать отредактировать начальный кусок (это сработало на моей машине , по крайней мере).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...