【发布时间】:2012-10-24 19:15:35
【问题描述】:
我使用 git gui 来选择要为提交暂存的行。这通常像一个魅力。我知道在命令行上执行相同操作的选项。
当一个文件最初在文件末尾没有新行时,git gui 会识别这一点并在编辑器中附加一条警告消息,如屏幕截图所示。
问题
缺少换行符导致的问题是不能再暂存和提交单独的行。当我右键单击选择特定行并从上下文菜单中选择 Stage line for commit 时,会弹出一条错误消息。
错误:致命:第 11 行损坏的 parch。
该问题并非特定于操作系统,可以在 Windows、MacOSX 和 Linux 上重现。我知道如果在文件中添加新行并在继续选择单个行之前提交此版本,我可以避免此问题。
重现问题的步骤
- 初始化一个新的存储库。
- 创建一个包含三行内容的文件,每行带有单词“Hallo”。不要在文件末尾换行。
- 添加并提交文件。
- 编辑同一个文件,在三行之间放置单词。
- 打开 git gui 并尝试逐行进行更改。
请求
我想知道 Git 是否有一些配置可以让我规避这个问题。一些自动功能(例如添加所需新行的钩子)也可以。
错误报告
我向 Git 邮件列表发送了一份错误报告。您可以关注并参与讨论here。
【问题讨论】:
-
这确实是 git-gui 的错误报告。这个问题应该只发生在文件中的最后一块。正在发生的事情是,当您暂存线路时,git-gui 会构建一个补丁,然后通过“git apply”应用它。在这种情况下,我们需要删除最后一行并用换行符重新添加它,并将“\ 文件末尾没有换行符”标记作为上下文。这一切都发生在 lib/diff.tcl apply_range_or_line 中。这不是微不足道的,但应该是可以修复的。
-
我同意:如果这个问题可以在 git gui 中修复就好了。不过,我不知道其他 UI 工具是否会遇到同样的问题。
标签: git newline git-gui git-index line-by-line