git - 从最后一次 git 提交中提取块而不重新提交原始提交
问题描述
假设我有一个提交,并且我意识到我想从中提取一小块并将该小块作为单独的提交提交。
我已经知道很多方法可以使用多个命令来做到这一点,一个例子是:
$ `git reset @^`
$ `git add -p` # Stage all but the small chunks I want to extract
$ `git commit` # Commit original (without the small chunks)
$ `git commit -a` # Commit the remaining chunks as a new commit
问题是,我想这样做而不必手动暂存并重新提交第一次提交。显然,提交哈希会改变,但我想避免输入命令来暂存并提交初始提交。
换句话说,理想情况下,我正在寻找一个 git 命令,它可以让我立即: - 从最后一次提交中交互式选择块 - 从提交中删除这些块(保留原始提交消息) - 将这些块放到索引中,以便它们'准备好让我提交
这样的命令存在吗?
解决方案
不,我能想到的最短方法是从您的列表中删除一个命令:
git reset @^
git commit -p
git commit -a
但是,从您在评论中的评论中,我认为您可能会发现另一件有用的事情是git reset -p @^
- 它显示的帅哥是相反的,这有时可能会有点令人困惑,但这允许您有选择地取消上一次提交的更改,从而启用这种工作流程:
git reset -p @^
# potentially more wrangling
git commit --amend
git commit -a
推荐阅读
- javascript - TypeError: Object(...) is not a function React.js
- java - 我正在尝试合并两个排序的数组,但得到 java.lang.ArrayIndexOutOfBoundsException: 5 无法弄清楚为什么
- javascript - 数组过滤器和如果是真实的地图数据
- javascript - Javascript将图像转换为文件返回零
- mysql - SQLyog 函数:从 INNER JOIN 返回值时出现语法错误
- javascript - 函数中意外未定义
- memory-management - 这里的每个 24 位页表条目如何?
- docker - 使用 Dockerfile 在 700 (drwx------) 目录下创建文件
- javascript - 在javascript中从json读取数据并过滤数据
- linear-algebra - 基本计算问题:指数表达式