【问题标题】:Can't remove line from being added to staging area无法删除添加到暂存区的行
【发布时间】:2020-11-03 20:32:54
【问题描述】:

我在我的 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:补丁不适用

我不明白为什么这不起作用。这里有什么问题?我怎样才能上演第二行,而不是第一行?

【问题讨论】:

  • 尝试同时更改第二个文件的行范围:+2,7 -> +2,6
  • 不起作用:(
  • 手动编辑补丁块不是很方便,但是,这是您希望将文件编辑为您真正想要的文件并运行普通git add
  • 但是我不想放入下一次提交但之后的更改会丢失。我可以将整个内容保存到一个临时文件中,然后将实际文件编辑为我想要提交的内容。我只是想我可以用 git 做一些事情,而不是自己摆弄这些变化。
  • 2,7 中的2 表示在添加的文件的最开头插入了一行额外的行。是这样吗?

标签: git


【解决方案1】:

我正在本地重现相同的错误:

  • 如果工作树文件中有额外的第一行,然后是一大块,则足够接近,以便初始 add -p 让我可以同时进行这两项更改,
  • 然后我运行add -p
  • 我先说[s]plit 帅哥,
  • 然后我添加或删除第一行(两者都会导致相同的错误),
  • 并要求[e]dit第二个大块头:

我什至无法应用建议的补丁(例如:保存并退出编辑器而不进行修改会产生错误patch does not apply)。

我猜第一个条件会使行范围发生变化,我想不出 range + diff hunk 的有效组合。

我还没有弄清楚部分编辑的文件存储在哪里


作为一种解决方法:

您可以将当前版本保存在提交或存储中,并根据您的方便编辑文件。

一个足够接近实际上运行git add -p的解决方法您打算:

  • 运行git add -p,但如果它是split hunk 的子片段,请不要尝试edit,只需add 那些
  • 运行git stash --keep-index -- the/file(或git stash -k -- the/file
  • 编辑文件以删除上面包含的额外行
  • 添加并提交该新文件
  • 然后运行:
    • git stash pop 并修复冲突(你想保留their 版本)
    • git show stash@{0}:the/file > the/file(直接将存储在磁盘上的版本转储,而不运行任何类似合并的操作)

鉴于您问题中的行范围:我猜您首先要求“拆分”,然后“编辑”第二个大块。

您可以尝试编辑初始块(这至少在我的机器上有效)。

【讨论】:

  • 不看git的代码:我猜这个错误在于首先要求split一个大块,然后edit一个子块。
  • 是的,你是对的。我拆分了大块,将第一个子块标记为未上演,并尝试像问题中描述的那样编辑第二个子块。感谢您提供解决方法的想法。如果这真的是一个错误,你知道我应该在哪里报告吗?或者要遵循哪些步骤来修复它?
  • 我将从git on github 开始。他们说应该通过邮件列表 git@vger.kernel.org 报告错误
  • @David:如果这篇文章回答了你的问题,你能接受吗?以便其他人知道有解释和解决方法
猜你喜欢
  • 2015-03-14
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 1970-01-01
相关资源
最近更新 更多