需求1
假定你有一个分支dev1,你对他提交了8次commit。然后你先回退到之前第5次commit,后面的5678commit 我也都不要了。
git reset --hard commit5
git push origin yourBranchName -f
需求2
假定你有一个分支dev1,你对他提交了8次commit。然后你想退到之前第5次commit,但是又不想丢弃之后的678commit。
先把dev1 复制一份叫dev2
然后把dev1 回退到 commit5
复制的代码见:
回退的代码见:
-- 本地分支回滚到指定版本
git reset --hard <commit ID号>
-- 强制推送到远程分支
git push -f origin <branch name>
合并分支
idea 中git 将 dev 分支合并到 master 分支 或将master 分支 合并到dev 分支_程序员小董的博客-CSDN博客_idea 分支合并到dev
需求3
目前存在两个分支master分支与dev分支
本来应该是dev上修改代码然后推到远程的dev上。
但是误操作了,在master分支上修改了代码,且已经commit了。
目前的想法是从之前commit的文件再拉回来。
使用下面的命令:
git reset {commitId}
操作后,变更的代码回来了,只是没有add更没有commit而已。
之后 git checkout dev 即可。
关于git reset 查看
git的使用——reset_git reset_以沫wh的博客-CSDN博客
commit了,没有push 但是改动我还想要
修改了代码,add了,也commit了,还没有push
我想撤销commit,但是之前的改动我还要
使用命令
git reset xyz
上面xyz就是你commit之前的上一个commit的id。
执行完上面的命令后,
上面的例子是我把代码里的 not_succ 改成了notSucc
commit了,也push了 但是改动我还想要
使用
git reset --soft 0f9145ac742d39eae8415ebb30f61c492ef82480
使用如上的代码
你之前的改动就又出现了,idea里面展示如下:
仿佛我的修改压根没有commit更没有push
我原本的改动是把queryIssueRecord exception 变成了[queryIssueRecord][exception]
commit了,也push了 改动我不想要了
本来的代码是queryIssueRecord query={}
我改成了queryIssueRecord abc query={}
我也push 了
使用
git reset --hard xyz
之后idea就仿佛完全忘记了abc的事情,本地没有修改
但是你如果去远程仓库上看,远端的代码还是已经有了abc
如果你彻底不想要abc这个事情了
那怎么办?你再把本地的push上去就ok了(远程的commit历史也就没有abc这个事情了)
git push origin {yourBranchName} -f
这不就是本文最开始的那个需求1么.