gpt4 book ai didi

git - 为什么 `git stash -p` 有时会失败?

转载 作者:IT王子 更新时间:2023-10-29 00:34:13 24 4
gpt4 key购买 nike

我♥ git stash -p。但有时,在 yns 的令人满意的 session 之后,我得到这个:

Saved working directory and index state WIP on foo: 9794c1a lorum ipsum
error: patch failed: spec/models/thing_spec.rb:65
error: spec/models/thing_spec.rb: patch does not apply
Cannot remove worktree changes

为什么?

最佳答案

每当我尝试将大块分割成彼此靠得太近的小块(更改之间少于 3 行)时,我都会遇到这种情况。简短的解释是补丁中的上下文行与您的本地更改冲突。下面有更完整的解释。


假设我有一个包含这些未提交更改的 git 存储库:

--- a/pangram
+++ b/pangram
@@ -1,8 +1,8 @@
The
-quick
+relatively quick
brown
fox
-jumps
+walks
over
the
lazy

如果我 stash 第一个零钱,我会得到:

--- a/pangram
+++ b/pangram
@@ -1,5 +1,5 @@
The
-quick
+relatively quick
brown
fox
jumps

git stash 命令实际上确实成功保存了补丁(检查 git stash list),但随后 git 反向使用该补丁从我的应用程序中删除 stash 的更改工作目录大块头之后的上下文有“跳跃”,这与我工作目录中的“行走”不匹配。所以 git 摆脱了困境

error: patch failed: pangram:1error: pangram: patch does not applyCannot remove worktree changes

并将所有更改保留在我的工作目录中,并且存储变得毫无值(value)。


我认为这是 git 的 hunk splitting 支持中的一个错误。如果它知道将更改拆分得太近,它可能会从补丁中删除几行上下文,或者 jimmy 补丁以使用修改后的上下文行而不是原始上下文行。或者,如果官方不支持在如此接近的情况下拆分 hunk,它实际上应该拒绝拆分如此关闭的 hunk。

关于git - 为什么 `git stash -p` 有时会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5047366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com