git 分布式版本控制系统
为了更好理解git首先理解几个概念:
图1.1
如上图所示
1 . 工作区:
这里是你实际编写代码的地方,你可以简单理解为工作目录,你所编写的代码放在这。
2 . 版本库:
工作区里会有一个隐藏目录: .git,这里面存放了很多东西,是版本控制的核心,版本库中又有两个比较重要的概念:
(1) stage 暂存区:
可以理解为暂存区目录;(对应你的git add指令)
(2) 主 分 支(master):(对应你的git commit指令)
可以理解为版本库各个版本的文件分支;
如上head指针指向是当前版本,你可以通过指令抓取远端的文件,而这些文件都是从git的master获取,(master主分支记录了每一版源文件的改变).
version1->version2->version3;在master分支中,head指针指向当前版本,所以你实际可以获取各个版本的代码。如下所示,三个圆分别代表三个版本的源代码。
图 1.2
有了以上的理解首先可以熟悉如下几个指令:
1. git add file
将当前工作区的文件添加到版本库的暂存区;
2. git commit -m "expalain the version you commit"
将暂存区的文件放到master的分支中,你可以理解head指向的圆圈为不同的版本,这样更好理解版本的切换;
综上在git将文件上传到本地的版本控制库中只需要如下两个操作;
git add file && git commit -m "expalain the version you commit";
这样master分支就会为你的提交生成响应的信息,就试图1.2中的圆圈对应的是你每一次的提交所对应的版本,当然你可以通过指令执行版本的回退与版本的切换。
3. git checkout --file
现实工作的时候你可能会出现对当前版本的文件不当修改,这样你可以通过git checkout --file 将工作区的代码回退到当前版本还没有修改时候的样子;(主要是修改工作区的代码)
而在你修改之后, 你如果执行了git add 之后,则需要执行git reset HEAD file 清楚暂存区的代码;
而如果你即执行了git add 与 git commit 则需要进行版本回退,
如下指令4:
git reset --hard (版本号); //你想回退的版本号;
git reset --hard HEAD^ ; //回退至上一个版本号;
当然你可能会疑问如何知道commit id, 通过指令 git log则 可以获得相应的提交历史,这时候你可以看到相应的信息,(在实际的commit的时候添加额外的信息有助于你的理解,所以每次实际的提交中最好 git commit file -m "some information about your commit").
最最最后,如果一旦你回退到某一个老版本之后,你在想回退到新版本之后,由于关机了,之前的commitid你不知道了如何回退,这时候就可以到 git reflog中去查看,这里存着每一次commit的信息。
4. git reset HEAD readme.txt(前面已经介绍。)
参考内容:(分支的管理那一章还没有完全理解)
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743862006503a1c5bf5a783434581661a3cc2084efa000