我如何将最后的N承诺集成到一个承诺中?
当前回答
简单的解决方案:
git reset --soft HEAD~5
git commit -m “委托信”
git push 起源分支 --force-with-lease
其他回答
在我的工作流中,我开始一个分支,我的第一个承诺这个分支总结了目标(也就是说,这通常是我将作为功能的“最终”消息推到公共存储库)。所以当我完成时,我只想做的是Git squash master回到第一个消息,然后我准备推。
我用这个 alias:
squash = !EDITOR="\"_() { sed -n 's/^pick //p' \"\\$1\"; sed -i .tmp '2,\\$s/^pick/f/' \"\\$1\"; }; _\"" git rebase -i
这将破坏历史被破坏之前,它会这样做 - 这给你一个机会,通过抓住一个旧的承诺ID从控制台,如果你想转换。
要将最后10个承诺分为1个单一承诺:
git reset --soft HEAD~10 && git commit -m "squashed commit"
如果你也想更新远程分支与破碎的承诺:
git push -f
下面是另一个视觉例子,在执行后会发生什么: git rebase -i HEAD~3
此分類上一篇
來源: https://www.git-tower.com/learn/git/faq/git-squash/
例如,如果您想在一个分支(远程存储库)中排除最后3个承诺,例如: https://bitbucket.org
我所做的就是
git reset --soft HEAD~3 git commit git push 起源 <branch_name> --force
如果您想将每个承诺分成一个单一承诺(例如第一次公开发布项目时),请尝试:
git checkout --orphan <new-branch>
git commit
推荐文章
- Git在不改变提交时间戳的情况下进行改基
- VS 2017 Git本地提交数据库。每次提交时锁定错误
- 如何在过去的一些任意提交之间注入一个提交?
- 从GitHub克隆项目后拉git子模块
- GitHub上的分叉和克隆有什么区别?
- 递归地按模式添加文件
- 我如何使用notepad++(或其他)与msysgit?
- 如何将现有的解决方案从Visual Studio 2013添加到GitHub
- Git存储库中的悬垂提交和blob是什么?它们来自哪里?
- 我如何简单地从我最新的git提交创建一个补丁?
- Git显示“警告:永久添加到已知主机列表”
- 我如何检索一个回购的远程git地址?
- 如何列出提交,因为某些提交?
- 如何在不位于存储库的情况下执行Git命令?
- 为什么git在Windows下记不住我的密码