分布式版本控制系统Git学习笔记,建议学习之前先了解一下常见linux命令。
学习教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
参考资料:http://lib.youkuaiyun.com/base/git
版本控制
一、原理和概念
工作区: 电脑中能看到的目录,你git init
的目录,在这里对文件进行修改。
版本库: 工作区下有一个隐藏的.git目录,因为它藏着所以并不属于工作区。它用于保存记录版本。
暂存区(stage): 存放于版本库下的index文件中,用于暂存git add了的修改。
在git中,git记录每次版本的修改,并将这些修改串成一条时间线,为每次提交的修改生成一个版本号(一个很大的十六进制数)。然后我们就可以通过这个版本号来进行版本控制了。我们可以通过使用命令git log
来查看这个提交修改的时间线。
git log --pretty=oneline
查看精简的记录。
git中,有一个HEAD指针,指向git当前记录的版本。
要找到对应的版本,除了使用生成的版本号,还可以使用HEAD来找到某个版本,比如
HEAD 当前版本
HEAD^ 上一版本
HEAD^^ 上上版本
HEAD~100 上100版本
二、查看与提交修改
当我们对工作区中内容进行了修改以后,需要提交修改让git帮我们保存。
使用git status
查看仓库当前状态,它会告诉我们那些文件做出了修改,又没有提交等。
如果要查看某个文件修改了哪些内容,使用命令git diff <file ...>
。
当你确定了这次修改以后,使用git add <file ...>
将修改保存到暂存区。使用git commit -m <msg>
提交修改。
三、撤回修改&版本回退
当我们做出了某个让人后悔的修改以后,就会需要撤销这次修改,或者回退到之前的版本。
当我们想恢复到之前的某个版本时就需要版本回退。前面说过,可以使用git log
查看提交的历史版本记录,通过这个版本记录可以知道某个版本的版本号,或者依据HEAD指针,定位版本。如果我们要回退到这个版本,则可以使用命令git reset --hard <版本号|HEAD指针定位>
使当前版本回退到之前的版本。
注意: 版本号不需全部输入,足够区分修改的位数足矣
如果你要撤回还未保存到暂存区的某个文件的修改,可以使用命令git checkout -- <file ...>
如果要撤回已经保存到暂存区的修改,则需要使用命令git reset HEAD <file ...>
,同时也会撤销未保存到暂存区的修改。
四、要是想恢复回退之前的版本呢?(就你事多)
命令git reflog
可以查看历史操作记录,你可以从中找到回退之前的版本号,然后再使用git reset --hard <版本号>
就可以回到之前的修改啦。
远程仓库
Git是分布式版本控制系统,也就是说,同一个版本仓库,可以存放到不同的机器上,而且每台机器克隆过来的版本库都一样,没有主次之分,这样我们就能够在不同的机器上与他人进行协作,或者在自己的机器上查看别人分享的内容。
远程仓库是指托管在因特网或其他网络中的版本库。github就是一个git仓库托管网站,你可以将你的版本仓库放在上面,这样别人就能够从上面获取你的版本库。
一、使用前的准备
1、 首先注册一个github账号。
2、 创建SSH Key,如果你没有生成过SSH Key,则打开git bash,输入命令创建SSH Key
ssh-keygen -t rsa -C "你的电子邮箱地址"
执行后会让你输入路径保存key,括号里是默认路径,直接回车使用默认值。然后会让你设置一个口令,回车默认即可。完成以后你就能在上面的那个默认路径找到id_rsa
和id_rsa.pub
两个文件,前者是私钥,后者是公钥。
3、 登录github打开"Account settings"->“SSH Keys”,选择"Add SSH Key",title随便填,Key中填上id_rsa.pub
文件中的内容(选择记事本方式打开)。填完后添加。这个SSH key用于保证提交是你推送的,如果你使用多台电脑提交,则为这些电脑都创建SSH Key,并添加到github中。
二、添加远程仓库
1、 在github上创建一个远程仓库。名字和本地仓库一样。创建完以后将这个仓库关联到本地仓库。
git remote add <远程仓库名称> <远程仓库地址>
远程仓库名称随便设置,一般默认为origin。
远程仓库地址如下
https://github.com/你的github账号/仓库名称.git
或者
git@github.com:你的github账号/仓库名称.git
2、 将本地仓库内容推送到远程仓库。
git push <远程仓库名称> <本地分支>:<远程分支>
上述命令将当本地分支推送到远程库。
简化起见,我们第一次提交时可以使用git push -u <远程仓库名称> <本地分支>
-u参数指定一个默认主机,并将本地分支与远程同名分支关联起来。如果没有远程同名分支则创建。这样,后面提交修改时就可以直接使用git push
提交了。
- 分支相关介绍可查看下一文章
三、从远程库克隆
git clone <远程仓库地址>