有多种方法可以做到这一点,但没有一种是推荐的
因此,使用它们需要您自担风险。
推送其中一个提交
使用变基
如果您有 2 个提交并且希望只推送其中一个,这不是最新的。
- git reset –hard
- git 推送
- git reset –hard
只有与 2nd Commit Id 对应的更改才会被推送,而您的最新提交将不会被推送。
但是,如果必须推送最新的提交而不是第二次提交,则必须先撤消提交
- git log - 记下 53259b225 之前的提交 ID。让我们说它是 xxxxxxxx
- git rebase -i xxxxxxxx
在打开的编辑器中,您应该会看到两行代表您的提交 53259b225 和 227552392 之类的
选择 227552392 blah blah
选择 53259b225 blah blah
将这两行重新排序,使其看起来像
选择 53259b225 等等等等
选择 227552392 blah blah
然后保存文件。
有了这个,你基本上改变了你的提交顺序。如果您在两次提交中处理不同的文件集,那么这将是一个相对容易的过程。如果没有,那么您可能需要进行一些合并。
如果在任何时候你认为自己搞砸了,那么你可以发出命令
- git rebase --abort 让您回到开始交互式 rebase 之前的流的样子。
使用壁球
- 执行“git log”并记下您的 HEAD 提交(列表中的第一个提交)并记下您的更改的“基本提交”(您要替换的第一个提交之前(及时)的提交)。确保添加索引中没有文件。
- 执行“git reset --hard”(请谨慎使用此命令;确保执行上述步骤)。
- 执行“git merge --squash” - 这将撤销提交,所有提交的文件都将被暂存。
- 执行“git status”等操作并验证预期的更改是否在您的索引(和工作树)中。
- 如果您不想推送任何文件,请执行 git reset HEAD 或
如果您希望对这些文件进行更改,请进行这些更改并暂存它们
- 执行“git commit -m ''”。
如您所见,这也可用于将几个提交合并为一个。