博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Git】Git-常用命令备忘录(二)
阅读量:4035 次
发布时间:2019-05-24

本文共 1709 字,大约阅读时间需要 5 分钟。

开发过程中,各种问题都会出现,比如手残,眼花,头昏,导致了误操作,那么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 filegit add -A

    需要先 git reset HEAD <file>,然后再git checkout -- <file>

  • git checkout -- file其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以还原

3.参考链接

https://www.liaoxuefeng.com/wiki/896043488029600/896067008724000

https://blog.csdn.net/rongDang/article/details/82823399

https://blog.csdn.net/rongDang/article/details/82853332

你可能感兴趣的文章
Idea下安装Lombok插件
查看>>
zookeeper
查看>>
Idea导入的工程看不到src等代码
查看>>
技术栈
查看>>
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
Centos import torchvision 出现 No module named ‘_lzma‘
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>
小谈python 输出
查看>>
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
查看>>
python:如何将excel文件转化成CSV格式
查看>>