【问题标题】:git checkout --patch by words?git checkout --patch by words?
【发布时间】:2012-12-24 14:20:18
【问题描述】:

我们有一个项目,其中文件包含很长的行,没有 缩短它们的可能性。如果我们可以显着简化我们的工作流程 我们也可以将git checkout --patch 用于此类文件。这不起作用,因为 如果整个大行有任何变化,则该行被标记为已更改。

通常,我们使用git diff --word-diff 检查此类更改。有没有可能 使checkout --patch 使用类似的格式?有没有其他方法可以 解决我们的问题?

【问题讨论】:

  • 纯粹出于好奇,这些长行包含什么?
  • 我真的,真的,希望没有人会问这个问题 :) 长行包含一个在段落中间拒绝按回车键的队友写的乳胶标记。 (虽然这看起来像是可以通过社交方式解决的问题,但我可以向您保证,将其作为技术问题处理会更容易......)
  • 在这种情况下,我为我的好奇心道歉;)。虽然让你的队友正确地写东西会很好,但技术解决方案可能会更容易。
  • 这可能不是一个令人满意的答案,但您可以尝试将这些文件传递给某个脚本,该脚本会自动将这些长行分成较短的行。
  • «长行包含一个队友写的乳胶标记,他拒绝在段落中间按回车键。»告诉他如何在他最喜欢的编辑器中使用等效的set fo+=at/set fo+=t*。这应该完全可以从技术上解决,但另一方面:让编辑器为他换行。 // *(Vim,在你输入时将段落重新格式化为当前文本宽度(默认值:80)。)/(默认值,当它扩展当前文本宽度时,在空白处自动换行;除非另一个选项允许,否则在非空白处都不会换行) .

标签: git vim patch


【解决方案1】:

经过一番尝试,我得到了this answer 的工作,并想出了如何使用它来结帐。我做了一些额外的更改来抑制有时会打印的警告,并且必须修复参数解析以更加灵活。 (由于这最初是一个管道脚本,其中参数由 git 核心进行预处理,因此在原始版本中没有必要)。

您可以使用this version of the fileraw file 方便保存链接)并将其复制到PATH 中的某个位置,如链接答案中所述。请务必在下载后设置其可执行位 (chmod +x path/to/file)。

假设您按照建议将文件命名为git-add--interactive--words,您可以使用以下命令为其定义别名:

git config --global alias.cop add--interactive--words --patch=checkout

现在您可以执行以下操作:

git cop HEAD~5 对 . (当前目录)5 次之前提交,或
git cop master -- docs/README 以交互方式从分支 master 签出 docs/README

当然,您可以随意调用别名(我在这里选择 cop 表示 'c'heck'o'ut --'p'匹配)。

我知道这个答案真的太晚了,所以它可能不再适用于你了,但是这个问题在未回答的列表上已经很久了,我今天才不得不弄清楚-- 也许它会帮助别人;)

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 2020-05-28
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多