【问题标题】:Make git add --patch remember which hunks I've declined to add until the next commit让 git add --patch 记住在下一次提交之前我拒绝添加的块
【发布时间】:2017-10-20 02:11:37
【问题描述】:

我常见的工作流程是进行一堆代码编辑,然后使用git add --patch 将我的更改组织成逻辑一致的提交。

一个反复出现的场景是这样的:

  1. 我跳过了一堆与我要进行的提交无关的更改
  2. 我添加了一些有意义的更改
  3. 我发现一个错字或一些我忘记删除的注释掉的代码
  4. 我点击q退出交互添加
  5. 我回到我的编辑器并进行小改动
  6. 我又开始git add --patch
  7. 我非常仔细地再次浏览了整个更改集,确保再次输入 n 来查找我不想包含的所有大块头
  8. 我找到我新更新的大块并输入 y 以添加它。
  9. 转到第 1 步

这个循环一遍又一遍地进行,直到最后我的提交准备就绪。

我想让 git 记住我明确拒绝添加的帅哥,这样下次我运行 git add --patch 时,我不必再次拒绝它们。

我认为 git 不支持这一点,但有什么工具或工作流程可以让我更轻松地进行调整吗?

【问题讨论】:

  • 你为什么不支持“早提交,经常提交”的风格?
  • 我确实经常提交,但特别是如果我在一个不熟悉的代码库中或添加一些东西,我会在我的工作副本中进行一些编辑,这些编辑没有意义组合成 1提交。
  • 不管怎样,当我做了很多需要重建和清理的黑客攻击时,我发现自己有时处于类似的情况。我没有尝试使用 git add -p 进行大量小提交,而是在临时分支上提交大更改,然后在“真正的分支”上重新开始进行更小、计划更好的更改。

标签: git git-add


【解决方案1】:

这可能最好使用我的编辑器(当前为 VSCode)中的 Git 集成来完成。

在有更改的文件的Git: Open Changes 视图中,您可以选择文件的一个区域,然后运行Git: Stage Selected Ranges 命令来暂存一个大块。由于您在编辑器中,因此在暂存之前进行更改是微不足道的。

我可能只需要更改我的工作流程并以这种方式进行暂存。

(我相信 Emacs 中的 Magit 也支持这种工作流。)

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 2010-09-25
    • 2011-04-30
    • 2013-05-21
    • 2012-07-15
    • 2012-12-14
    相关资源
    最近更新 更多