在 master 分支做了一次 commit ??!!
git add index.js
git commit -m '自以为是在开发分支其实是在master分支的一次提交'
之前没有出过这样的错误。就算出现也是直接push了然后再 reset 回滚然后再次 push -f。
撤回本地上次commit
git reset --soft HEAD^
如何合适的解决这种情况
reset的三个参数
–mixed(默认参数)
重置位置的同时,只保留Working Tree工作目录的內容,但会将暂存区 和 Repository 中的內容更改和 reset 目标节点一致,所以原节点和Reset节点之间的变更文件,会放入Working Tree工作目录中。
简单来说就是:不删除工作空间改动代码,但是撤销commit,并且撤销git add
git reset --mixed HEAD^ 和 git reset HEAD^
HEAD^ HEAD1 HEAD2 其中 HEAD^ HEAD1 同为上一个版本, HEAD2 为上两个版本,也就是两次commit,以此类推
如果需要再撤销修改
git checkout index.js
–soft
重置位置的同时,保留 working Tree 工作目录和暂存区的内容,只让 repository 中的内容和 reset 目标节点保持一致,所以原节点和reset节点之间的变更文件会放入暂存区中。
简单来说就是:不删除工作空间改动代码,撤销commit,不撤销git add
–hard
重置位置的同时,直接将 working Tree工作目录、 暂存区及 repository 都重置成目标 reset 节点的內容。
简单来说就是:删除工作空间改动代码,撤销commit,撤销git add
这个操作会直接恢复到了上一次的 commit 状态。
如果已经push origin
在做完上面的操作后
git push origin -f
一般在撤回回滚的操作时候请记录好 commit 的版本号,以防再次出现失误无法挽回
关于git reset命令總結
git reset –mixed :默认方式,等同git reset;回退到某个版本,保留源码,回退commit和index信息
git reset –soft :回退到某个版本,只回退commit的信息,不会恢复到index file一级;可以再次commit
git reset –hard :彻底回退到某个版本,本地的源码会变为目标版本的内容
版权归原作者 今昔在 所有, 如有侵权,请联系我们删除。