目录
Git自学与掉坑实录(一)
· 创建版本库
· 添加提交文件至版本库
Git自学与掉坑实录(二)
· 本地文件的修改与提交
· 多版本之间的切换
· 查看版本历史
· 忽略特殊文件
Git自学与掉坑实录(三)
· 工作区、暂存区、版本库的概念
· 进行到各个阶段管理(添加、删除、恢复、修改)文件的方法
Git自学与掉坑实录(四)
· 远程仓库
· Github的入门说明
· 参与开源项目
Git自学与掉坑实录(五)
· 管理(创建、合并、删除)分支
· 解决冲突
· Fast forward模式与禁用(是否显示合并信息)
· bug分支
· 功能分支
· 多人协作(查看信息、推送远程库、抓取)
Git自学与掉坑实录(六)
· 创建标签
· 删除标签(本地与远程)
Git自学与掉坑实录(七)
· 显示代码颜色
· 忽略文件与强制添加某些忽略文件
· 搭建Git服务器
<br />
七、工作区与暂存区
1.工作区(Working Directory)
电脑里能看到的目录,比如"learngit"文件夹就是一个工作区。
2.版本库(Repository)
经过一系列的操作,再回头来看版本库的概念更加容易理解。
工作区中有一个隐藏目录".git",这个文件夹不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫Head。(Head的概念在"六、版本切换"中也有提到。)
前面说到,当我们添加文件至版本库时分两步,
输入命令$(添加到仓库):git add
;
实际上是把文件添加到暂存区。
输入命令$(提交到仓库):git commit
;
实际上是把暂存区的所有内容提交到当前分支。创建Git版本库时,Git自动创建了唯一一个master分支,所以,
git commit
就是往master分支上提交更改。
这时候我们查看一下版本库的状态:
输入命令$:git status
;
"modified"表示"wil.txt"被修改了,"Untracked files"表示"woo.txt"文件还未被添加过。
输入命令$:git add wil.txt woo.txt
&git status
;
</br>
输入命令$:git commit -m"gogogo"
&git status
<br />
八、文件管理
1.管理修改
· 先add才能commit;
· git diff
只能查看工作区的修改内容。
2.撤销(Unstage)修改
· 撤销工作区的修改
输入命令$(撤销在工作区未提交到"**分支"的修改)git checkout -- file
这里会有两种可能性:
· 一种是readme.txt修改后还没有被放到暂存区,撤销修改后就回到和版本库一模一样的状态;
· 一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是暂存区有内容恢复到暂存区内容,暂存区空的恢复回到版本库。
没用"--",就变成了“切换到另一个分支”的命令。
· 撤销暂存区的修改
输入命令$(撤销在暂存区的内容)git reset HEAD file
再用上一步命令,撤销工作区的文件即可。
过程中可以随时配合
输入命令$(查看工作区文件内容)cat file
;
输入命令$(查看版本库状态)git status
;
· 撤销版本库的修改
输入命令$(回退到上一个版本)git reset --hard HEAD^
回退到上一个版本有条件的,就是还没有把自己的本地版本库推送到远程。
</br>
3.删除文件
· 删除工作区中的文件
输入命令$(删除工作区中的文件)rm file
· 删除版本库中的文件
输入命令$(删除版本区中的文件并提交)git rm file
&git commit
· 从版本库中恢复文件
输入命令$(撤销对工作区中文件的修改)git checkout -- file
相当于对工作区内容的撤销。工作区改乱了,从版本库中重新checkout一份最新的文件。
</br></br>
小结
$
git add file
#添加file到仓库。实际上是添加到暂存区。
$git commit -m "aaa "
#提交filename到仓库,并说明aaa。实际上是把暂存区的所有内容提交到当前分支。
$git checkout -- file
#丢弃修改在工作区的全部修改,用于工作区改乱的情况。可能恢复成从暂存区或版本库的状态。
$git reset HEAD file
#撤销暂存区的修改,放回工作区(再选择工作区的口令进行下一步操作),用于暂存区改乱的情况。
$git reset --hard HEAD^
#版本回退,用于已经"commit"的情况。
$rm file
#删除工作区的文件。
$git rm file
&git commit
#删除版本库中的文件并提交,注意操作需要提交到版本库。
· 如果一个文件已经被提交到版本库,那么就不用担心误删。但需要注意,我们只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
<br /><br /><br /><br /><br /><br /><br />