git - 删除远程提交
问题描述
我已经完成了提交并推送到远程分支而没有意识到,现在我想远程撤消该提交而不会丢失更改。我正在寻找 StackOverflow 和 Google,但我找到的信息因作者而异。
我想恢复远程中的最后一次提交并继续在本地维护更改而不跟踪能够将这些更改带到本地的另一个分支。
现在,当我阅读时,我必须这样做:
git revert HEAD
git stash -m "message"
git checkout branch
git stash apply
git add.
git commit -m "message"
git push
我还读到我可以挑选提交到另一个分支,这将是这样的:
git revert HEAD
git checkout branch
git cherry-pick id_commit
git push
解决方案
你是对的,在这里挑选樱桃会很好,但我会建议我认为更简单的方法:
只需运行git rebase --onto other-branch master~1 master
(这表示“重新调整最后一次之前的主节点和主节点(您的最新提交)之间的提交范围并将其重新播放到其他分支”
或者,如果您更喜欢樱桃采摘,我相信过程如下:
git checkout master
git rev-parse HEAD
从 master 看到最后一个提交哈希,我们会假装它是1234567
......git checkout other-branch
git cherry-pick -x 1234567
将提交应用1234567
到当前分支。
在您从上述说明中重新定位或挑选后,您可以选择删除 master 的提交:
git checkout master
git reset HEAD --hard
(删除 master 上的最后一次提交)git push --force
(用该分支的新历史强制更新远程同步分支
然后,在您other-branch
完成本地工作时处理您的代码并合并到 master 和 push
推荐阅读
- jax-rs - 无法使用 ConfigBean 和 @RunAs 填充 BD
- powershell - Windows 自定义不适用于 terraform
- javascript - Javascript中的问号
- css - Square Payment表单CSS问题
- javascript - 加载本地xml文件并显示在html5页面中
- postgresql - 无法检测到默认用户名。请明确提供一份
- r - 我收到错误“找不到对象安装”?
- scala - Graphql Schema 更新回滚
- java - 在游戏循环之前或之中运行时不显示 Swing 组件
- angular - 如何导航到angular6中的另一个项目?