我如何将最后的N承诺集成到一个承诺中?
当前回答
例如,如果您想在一个分支(远程存储库)中排除最后3个承诺,例如: https://bitbucket.org
我所做的就是
git reset --soft HEAD~3 git commit git push 起源 <branch_name> --force
其他回答
git rebase -i HEAD^^
在哪里 ^'s 的数量是 X
(此分類上一篇: 最後兩個命令)
在分支中,你想将承诺结合起来,运行:
git rebase -i HEAD~(n number of commits back to review)
例子:
git rebase -i HEAD~2
此将打开文本编辑器,您必须在每个承诺前更换“点击”,如果您希望这些承诺合并。
p, pick = 使用 commit
s, squash = 使用承诺,但输入前承诺
例如,如果您正在寻找将所有承诺合并到一个,则“选择”是您所做的第一个承诺,并且所有未来的承诺(位于第一个下方)都应该设置为“滑动”。如果使用vim,请使用 :x 在输入模式中保存和输出编辑器。
然后继续下调:
git add .
git rebase --continue
更多关于此和其他方式重新写下你的承诺历史,请参见这篇有用的文章
如果你想写下新的承诺消息从滑板,这就足够了:
git reset --soft HEAD~3 &&
git commit
如果你想开始编辑新的承诺消息与现有承诺消息的折叠(即类似于什么一个 pick/squash/squash/.../squash git rebase -i 指示列表会开始你),那么你需要提取这些消息,并将它们转移到 git commit:
git reset --soft HEAD~3 &&
git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"
两种方法都将过去三项承诺分成一个单一的新承诺,相同的方式。 软重定义只会重新点头到最后一项承诺,你不想分解。 无论指数还是工作树都不会被软重定义所触摸,让指数在你新承诺所需的状态(即它已经有所有从你即将“扔掉”的承诺的变化)。
如果您使用 TortoiseGit,您可以将函数结合到一个承诺:
打开 TortoiseGit 背景菜单 选择显示日志 标记日志视图中的相关任务 从背景菜单中选择组合到一个任务
此分類上一篇
此功能自动执行所有必要的单 git 步骤 不幸的是,仅适用于 Windows。
2020年简单的解决方案:
git reset --soft HEAD~2
git commit -m "new commit message"
git push -f
2 意味着最后两个命令将被打破,你可以用任何数字取代它。
推荐文章
- 为什么调用git分支——unset-upstream来修复?
- Windows git“警告:LF将被CRLF取代”,这是警告尾巴向后吗?
- git中的哈希冲突
- git可以自动在空格和制表符之间切换吗?
- Git暂存文件列表
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 真实的恶魔
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时
- git reflog和log有什么区别?