Git文件的基本操作
执行git发现写错了想销毁这条未执行的命令---Ctrlc目录1.安装配置git环境2.添加文件-场景一3.版本回退4.撤销修改情况一对于工作区的代码还没有add情况二已经add但没有commit情况三已经add并且也commit了5.删除文件1.安装配置git环境安装gitsudo apt-get install git -y查看git版本git --version查看有没有安装gitgit创建文件夹用于git的学习创建本地的git仓库git init创建完后新增了一个.git的隐藏文件夹查看这个.git文件夹的结构tree .git/配置git的用户名称git config user.name 用户名称配置git的e-mail地址git config user.email e-mail地址查看git的配置git config -l工作区-暂存区-版本库2.添加文件-场景一先创建一个文件往里写点字通过vim进入编辑模式里面有insert模式删除场景下用还有replace模式查看文件内容场景下用编辑完后按一下Esc键再输入 :wq 就保存退出了。add操作git add 文件名commit操作git commit -m “本次提交的描述”小结先add到暂存区再commit到版本库里查看历史提交记录git log里面的HEAD-master意思是当前操作的分支同时还有一种查看历史提交记录的命令git log --prettyoneline再此查看.git结构HEAD默认指向master主分支而master分支默认指向最近的一次提交这一串数字就是当初提交的commit id查看一下这个commit idgit cat-file -p 要查看的commit id里面的tree 后面也跟了个commit id这是啥呢查看tree后的commit id再继续往下查看这个不就是新提交的ReadMe文件里的内容嘛所以小结一下当我们addcommit之后git会帮我们记录本次提交的commit id和是啥文件提交了和提交了啥内容提交多次查看commit id时会出现parent的commit id这个parent就是记录了这次提交的上次提交的commit id可以理解为git把每次的提交add-commit给串成了一个类似与链表的数据结构而且我发现每次好像每次提交都会产生3条commit id他们的关系如下就拿第一次add - commit产生的commit id来说修改文件但是没add也没commit然后过了几天想看看哪些没addadd了一般都会commit查看当前仓库状态git statuson branch master告诉你当前使用的啥分支下面3行表示提醒你add或者是将工作区的改动恢复成和暂存区一样最后一行说你既没add也没commit如果想知道发生了啥改动git diff 文件名这个命令是查看工作区与暂存区的差异的上面有这么一行 -1,3 1,4 这个-1,3表示原本的没有发生变化的从第一行开始共三行。这个1,4表示最新的没有发生变化的从第一行开始共六行。3.版本回退这里把每次addcommit之后的版本视为一个版本如下有3个版本如果当前版本不好就是想回到第二个也就是中间的那个版本呢这时候就需要用到版本回退这个功能啦。语法格式git reset 【--soft | --mixed | --hard】【HEAD】其中soft和nixed和hard中3选一不选的话默认是mixed。HEAD可以写成版本的commit idHEAD/HEAD 文件名 ---- 当前版本HEAD^ ----上一个版本HEAD^^ ----上上一个版本HEAD~0 ----当前版本HEAD~1 ----上一个版本HEAD~2 ----上上一个版本回退到上一个版本查看日志发现日志都已经删除了查看一下工作区的ReadMe文件发现确实发生改变了再次确认暂存区是否改变了查看工作区和暂存区的区别。发现没有提示说明和猜测的一样工作区和暂存区和版本库都回退了其它命令就不操作演示了。如果后悔了还是觉得没改的那个版本好git也提供了查看所以历史操作的命令。git reflogreflog翻译是有点抽象。执行符合预期。4.撤销修改就是写了近半个月的代码发现写的就是一坨屎山代码改动/新增啥的自己都忘光了这时候咋办情况一对于工作区的代码还没有addgit checkout -- 文件名新增了hello 3符合预期。情况二已经add但没有commit这种情况就是先把暂存区给处理和版本库一样然后就可以变成情况一的状态了。前面有个mixed默认的回退命令叫git reset mixed HEAD。查看工作区和暂存区的差异预期是有差异变化。然后这就是情况一执行git checkout命令。符合预期。情况三已经add并且也commit了毫无疑问直接用回退命令的那个git reset --hard HEAD^命令即可。这里不想演示了懒。5.删除文件删除在git中也是可以理解成修改的add加commit自然工作区和暂存区和版本库中都删除了还可以git rm 文件名直接删除了工作区和暂存区最后commit即可。