很抱歉,如果这个地方有重复,我在搜索解决方案时淹没了大量的技巧来改变提交消息(这对我没用)。
我有两组更改,应该是每次提交的一部分。不幸的是,我在早上开始了第二次变换,没有注意到我在前一天晚上忘记了第一次变换。
在大多数情况下,它们会影响不同的文件。但是,一个文件包含两个更改集的更改,如果在没有第二个更改集的情况下推送,则会中断构建。太糟糕了,我想在一个单独的分支上工作,直到功能。
可悲的是,当我注意到有一个包含更改的文件时,我已经已提交(未推送)第一个变更集并在其上创建了工作分支都。
有没有办法编辑我的提交,以便我可以提取影响变更集2的更改?
在Mercurial中,您可以通过
解开提交当重新打开GUI时,补丁包含了它们应该的内容,可以最终确定并推送。
这实际上是我的目标工作流程。 git有什么类似的东西吗?
我正在使用的工具:Win10上的TortoiseGit和GitExtensions
编辑:解决方案中建议的解决方案
git checkout new_branch
git reset -p HEAD~1
git add -p
...
git commit -m "my changeset 1"
git add
git commit -m "my changeset 2"
git checkout old_branch
git reset --hard <new_branch>~1
在变更集1中我old_branch
,在变更集2中为new_branch
。
再次感谢!
答案 0 :(得分:3)
使用git add -p
有选择地暂存您计划提交的更改/数据。提交第一批后,您可能会留下第二组更改,在这种情况下,您可以正常添加文件并提交。
Git会询问您对每次提交的要求。输入&#39;?&#39;求助。按&#39;上演大块头和“大佬”从你的临时区域中排除大块头。
如果git没有选择足够精细的大块,当它询问你如何处理大块时,你可以按下&#39; e&#39;并且您的编辑器将打开,您可以选择要包含的块的哪些部分。
最近了解到这一点并且非常有用。