【问题标题】:Git commit manually editting hunkGit commit 手动编辑大块
【发布时间】:2014-02-27 19:52:22
【问题描述】:

所以我在为我的提交正确添加大块时遇到了问题。

我有这样的事情:

@@ -6,6 +9,5 @@
#include "incfile.h"

 bool func3(int&, const char*);
-int func1(const int, std::vector<std::unique_ptr<type> >&);
-void func2(const std::vector<std::unique_ptr<type> >&);
+int func1(const int, std::vector<std::shared_ptr<type> >&);
 void func4(const int);

我试图仅将更改暂存为 func2 我希望他在差异提交中更改为 func1,我很挣扎,因为我每次和每一次组合都会删除 - 或行或其他导致补丁不适用。我认为我可以简单地从func1 前面删除- 并删除func1+ 行,这很好,但它不起作用。

【问题讨论】:

    标签: git git-commit


    【解决方案1】:

    这样做:

     int func1(const int, std::vector<std::unique_ptr<type> >&);
    -void func2(const std::vector<std::unique_ptr<type> >&);
    

    换句话说,将第一个- 替换为(空格)并完全删除最后一行。

    【讨论】:

    • 我试过了,还是说补丁不适用
    • 请给出确切的错误。还有你执行什么命令来暂存文件?
    • 您究竟是如何尝试暂存文件的?
    • 我正在做一个git add -p file,我有 3 个块,第一个我没有添加,这是第二个,第三个我没有添加。
    • 然后你在第二块按'e'?另外,第三块是否与第二块相关?
    【解决方案2】:

    您可以尝试git rebase -i ... 设置一系列提交以进行修改。 -i(交互式)标志在每次提交时提供的选项之一是edit。这会使进程停止,因此您可以随意更改提交(在这种情况下,编辑修改后的文件以品尝),然后git add incfile.h 记录更改,git rebase --continue 重播其他提交。

    如果您是偏执狂,您可以在提示上创建一个分支来玩转,不要冒被git checkout -b experiment 丢失它的风险,并在新的experiment 分支上工作。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2012-05-30
      • 1970-01-01
      • 2013-07-23
      • 2020-06-27
      • 1970-01-01
      • 2018-11-11
      • 2021-10-11
      • 2014-05-03
      相关资源
      最近更新 更多