【Git】Git-常用命令备忘录(二)
开发过程中,各种问题都会出现,比如手残,眼花,头昏,导致了误操作,那么git作为一款由Linus亲自操刀,替换掉BitMover
公司的BitKeeper
的优秀源代码管理工具,让您在各种乱七八糟的误操作中,总有后悔药吃,就是git
的能力。
了解这种能力之前,首先还是要了解他的几个重要逻辑概念
逻辑概念
1.工作区
就是我们编写代码的区域
2.版本库
2.1 暂存区
git add
,实际上就是把要提交的所有修改放到暂存区
2.2 当前分支
git commit
一次性把暂存区的所有修改提交到当前分支,提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的
常用操作
1.撤销更改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
。
# “哎,又有新需求,修改代码”
# “咦,改乱了,这个逻辑好复杂,重新理一下逻辑,重头来过”
$git checkout -- file
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD
,就回到了场景1,第二步按场景1操作(git checkout -- file
)。
# “新需求,修改代码”
# “嗯,对,可以了”
$git add file
# “哦,NO,不对,这里不对”
$git reset HEAD
$git checkout --file
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,那就需要版本回退了,不过前提是没有推送到远程库。
# “新需求,修改代码”
# “嗯,对,可以了”
$git add file
# 提交代码
$git commit -m "功能完成"
# “完了,完了,这里不对,咋办?”
$git log
# 该命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline只写 --onleline也可以,只会显示commit id 的前几个字符
$git log --pretty=oneline
#or
$git log --oneline #只会显示commit id 的前几个字符
#和SVN不一样,Git的commit id不是1,2,3...递增的数字,而是一个SHA1计算出来的数字,用十六进制表示。
#【回到过去】
$git reset --hard HEAD^ #回退到上一个版本
$git reset --hard HEAD^^ #回退到上上一个版本
#【回到未来】-前提是你git没关,还找到了未来的commit id
$git reset --hard 752f5c2
#【不小心关闭了git,时空跳跃的按钮不见了】
$git reflog
#记录你的每一次命令
#找到commit id
-
回到过去,用
git log
可以查看提交历史,以便确定要回退到哪个版本。 -
回到未来,用
git reflog
查看命令历史,以便确定要回到未来的哪个版本。
2.删除
-
rm file
,如果你用rm
删除的文件,就相当于只删除了工作区的文件,如果需要恢复,直接使用git chekout -- file
就可以 -
git rm file
,如果你用的是git rm
删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,相当于执行了以下两条命令:# 删除文件 rm file git add -A
需要先
git reset HEAD <file>
,然后再git checkout -- <file>
-
git checkout -- file
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以还原
参考链接
https://www.liaoxuefeng.com/wiki/896043488029600/896067008724000
- 原文作者:Garfield
- 原文链接:http://www.randyfield.cn/post/2020-04-20-gitcmd2/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。