git reset
命令三个参数,后面可以跟 commitId
或者文件名称
git reset --soft ;
git reset --mixed;
git reset --hard;
--soft: 工作区不回退,暂存区不回退,本地仓库回退
--mixed: 工作区不回退,暂存区回退,本地仓库回退(默认)
--hard: 工作区,暂存区,本地仓库都回退
例子:
git reset --hard HEAD^ (id 号)回退到上一个版本
git checkout -文件名
:撤销工作区全部修改
git reflog
: 记录每一次的操作命令
注意: reset
和 revert
的区别
revert 是撤销指定版本的内容并提交一次新的commit
reset 是 HEAD 重新指向某个 commit
reset 是 HEAD 向后移动了,而 revert 是 HEAD 继续前进
修改远程仓库地址: git remote set-url origin 地址
一、例子:我这里开发的代码提交到了错误的分支(当前所在分支:v2.8),应该提交到v2.7,实际提交到了v2.8。
二、正确的做法:
- v2.8分支回滚到远程原来正确的commit
- 把自己开发的代码提交到v2.7分支
三、解决办法:
- 回滚v2.8分支
1). 备份当前分支:git checkout -b v2.8bak
2). v2.8分支回滚到远程原来正确的commit:git reset --hard [正确的commitId]
3). 将本地回滚的代码强行提交覆盖到远程分支:git push -f origin v2.8
- 把自己开发的代码提交到v2.7分支
1). 切换到 v2.8bak 分支:git checkout v2.8bak
2). 回退自己已经开发好的代码:git reset --mixed [commitId]
3). 缓存代码:git stash
4). 切换到v2.7分支:git checkout v2.7
5). 将代码合并到v2.7:git stash pop
6). 解决好冲突后将代码提交到v2.7:git commit -m "注释"; git push origin v2.7
网友评论