git - 源树 - 如何恢复推送的提交
问题描述
我有 2 个远程分支,分别是 dev 和 master。
我总是在 dev 分支中开发并将更改合并到 master 分支。
但是我发现我不小心使用 master 分支进行开发,然后提交并推送到远程。
有什么办法可以恢复它,比如取消最后一次提交而不创建新的历史记录?
我正在使用源代码树
解决方案
(CLI 解决方案 - 但仍然欢迎使用 SourceTree 解决方案)
由于您在 repo 上单独工作而没有银行权限方案阻止您推送,因此您唯一的问题是找到master
上次推送之前的提交。
git log --oneline master
如果您只是提交了几次,您可以简单地从您的输出中找到这一点。从 中找到最后一个合并dev
,注意提交哈希,我们称之为<oldMasterHash>
。
然后就做
# move dev where master is now
git checkout -B dev master
git push
# now let's "repair" master
git checkout master
git reset --hard <oldMasterHash>
# here we'll need --force to push since this is a history rewrite
git push --force
...您将在本地和远程都准备就绪。
推荐阅读
- django - Django PostgreSQL 双索引清理
- reactjs - Google Analytic GA4 不会禁用 React 应用程序中的默认 page_view 事件
- highcharts - HighChart 可访问性故障?
- ios - 在 Realm 中的不同线程之间同步对象
- awk - awk 将空格后的信息复制到新列
- c - C 格式化字符串
- javascript - 使用 Vanilla Javascript 从 CSS 类的字符串中获取所有字符
- java - 你好,我正在尝试使用paintComponent画一个圆圈
- azure - 具有两个变量的 Powershell 循环
- jvm-hotspot - jvm中如何加载rt.jar - 热点?