git - 如何从上次提交中删除某些行并将它们添加到 git 中的新提交中?
问题描述
在我的最后一次提交中,我在文件中添加了某些行,这些行应该作为单独的提交添加。如何仅撤消提交中的那些行而不完全删除它们(因为我以后仍然需要添加它们)?
我知道我可以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
说“我不在乎索引是什么样子,只提交对我给你的特定路径的更改,而忽略其他所有内容”。它专为此类情况而构建,您可以在其中修复需要单独记录的内容。只需在工作树中修复您面前的内容,然后将更改发送到您希望记录的任何位置。
顺便说一句,这也是变基的便捷捷径,可以完全重构当前分支
git reset --soft `git merge-base @{u} @`
然后根据需要为您的更改、切换和/或创建分支进行补丁提交。一旦您对worfklow 感到满意,甚至git checkout --merge
会以您当前的提示为基础运行即兴内容合并,与进行 stash-and-pop 跳舞相比,解决小冲突明显容易得多。
推荐阅读
- powershell - 获取邮箱权限限制?
- c# - 正则表达式和 C# | 用正则表达式拆分
- java - 使用 RestTemplate 解析 JSON 的问题
- python - 如何删除熊猫中的配对重复?
- c# - 使用 Asp.Net 下的 owin 和 LinkedIn 身份验证提供程序进行 WebApi 身份验证
- vuejs2 - 如何在 Vue js 中重置组件属性?
- javascript - 如何将属性附加到leaflet.js 中的L.marker 并显示带有来自json 文件的数据的自定义弹出窗口?
- python-3.x - Dataframe 上的 NA 值
- javascript - 无法更新反应应用程序的状态
- javascript - 存根 process.nextTick 以中继参数