在我上次提交中,我在文件中添加了某些行,这些行应该作为单独的提交添加。如何仅撤消提交中的那些行而不完全删除它们(因为我稍后仍需要添加它们)?
我知道我可以做 git reset HEAD~1
完全撤消提交,然后修补添加 git add -p
只有我需要的行,然后再次提交。我实际上是在寻找一种更清洁的解决方案(如果存在的话)
最佳答案
对 @~
的一些更改不应该在 @
但是在另一个分支中,因此请在此处重置它们:
git reset -p @~ -- that/file
git commit
在那里提交他们
git checkout another
git commit -p -- that/file
git checkout @{-1} # aannd we're back
git commit -- path
中有特殊情况逻辑上面写着“我不在乎索引是什么样子,只提交对我给你的特定路径的更改,而忽略其他所有内容”。它是专门为这样的情况而构建的,在这种情况下,您修复了需要单独录制的内容。只需修复工作树中摆在您面前的内容,然后将更改发送到您想要记录的任何位置和方式。顺便说一句,这也是 rebase 的一个方便快捷方式,可以完全重构您当前的分支
git reset --soft `git merge-base @{u} @`
然后为您的更改做补丁提交,根据需要切换和/或创建分支。一旦你对那个工作流感到满意,甚至还有
git checkout --merge
,它以您当前的提示为基础运行即兴内容 merge ,解决小冲突明显比进行 stash 和流行舞蹈更容易。
关于git - 如何从上次提交中删除某些行并将它们添加到 git 中的新提交中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53773511/