情况:我有一个git提交(在 HEAD 处),其中混合了额外的日志记录代码,然后是一些“真实代码”。
现在我想做以下事情:
- 编辑掉所有日志代码,基本上清理了代码库
- Commit this
- 我现在在最后两次提交中拥有所需的状态,但它们的顺序错误,首先添加所有内容,然后删除日志记录,当我想要添加其他代码然后添加日志记录时
- Swap these two commits so, that
- 首先添加实际功能without伐木
- 然后日志记录代码被添加到它自己的提交中
现在我可以“手动”完成此操作,方法是获取包含日志记录的代码的简单副本,然后按照上面所述删除日志记录并将这些提交压缩为一个(因此提交历史记录中根本没有日志记录代码),然后恢复包含日志记录的代码副本,并将其添加为新的提交。
但是有没有一种方法可以优雅地做到这一点并且减少人为错误的可能性git特征?
为了澄清,我不想选择在我想要的第一次提交中包含哪些部分(因为那里有很多小的变化,我不想再次审查它们)。我想选择哪些部分remove从第一次提交开始,并添加为新的第二次提交。
我认为没有任何方法可以在没有人为错误的情况下做到这一点,但是通过使用一些 git-features 并基本上撤消您的提交,然后仅在每次提交中添加您想要的部分,您可以实现您所描述的目标。
我会通过软重置来做到这一点HEAD~1
,然后使用git add --patch
仅添加要在第一次提交中提交的部分,提交该部分,然后添加日志记录。
以下是我的处理方法:
-
git reset --mixed HEAD~1
这将重置您的最后提交消息并取消暂存这些更改。
-
git add --patch
这为您提供了一种交互模式,您可以在其中选择要暂存的未暂存更改的哪些部分。如果代码块太大(即您只想提交其中的一部分),您可以通过点击将其分成更小的部分s
然后只上演一小部分。它支持将代码拆分为单行更改,因此希望这对您来说足够好。
-
git commit
提交你的“真实代码”
-
git add .
暂存其余的更改(日志记录代码)
-
git commit
再次提交日志代码
通过使用这种方法,您不必将任何代码复制粘贴到任何地方,从而至少减少了人为错误的可能性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)