Git的简单操做(1)

首先说明一下,原本想用git管理一下最近写的论文,发现貌似git没法很好管理word这种二进制文件。不过既然看了点相关知识的皮毛,为了加深印象,决定仍是写下了。内容基本上都是廖雪峰老师里面讲的东西。java

(1)本地建立一个版本库(repository)
也就是在本地建立一个文件夹,里面的文件能够被git管理起来,这个文件夹里有一个隐藏的文件夹.git,里面放着的就是相关版本管理的东西。git

git init //在该目录下输入,使得git能够管理这个目录中的全部内容

(2)添加与提交文件
也就是你在该目录下有一个文件readme.txt,可是这个文件尚未被搞到版本库里面,能够说此时文件只是在工做区,尚未到版本库。github

git add readme.txt//添加文件到版本库,注意这里“添加”的含义,是添加到版本库中的缓存区(stage)

git commet -m "一些说明信息"//将缓存区中的全部文件都提交到版本库中的分支中(master),-m表示附带说明信息。

(3)查看当前状态web

git status//用于查看当前状态

(4)查看工做区与版本库中的区别vim

git diff readme.txt//显示的格式为UNIX中diff的合并格式

譬如我如今在目录下vim一个文件叫作lianxi.txt,内容为:
hello world
而后使用add与commit提交
再修改这个内容添加第二行:
l come to see you
但此时我不提交,只使用add添加一下就行了
而后我再修改内容添加第三行:
the world does not care you a shit
这里写图片描述
能够看到,这里diff的命令比较的是位于缓存区和工做区中的文件的区别,并无涉及已经提交了的版本库中的那个文件。
此时使用git status查看状态:
这里写图片描述
能够看到changes to be committed 代表有一个文件没有提交,
changes not staged for commit 代表有一个文件没有添加。缓存

若是想看提交区与工做区文件之间区别:服务器

git diff HEAD lianxi//HEAD表明当前提交区的版本

(5)版本回退ssh

git log//用于显示全部历史提交记录,即你本身commit过那些文件都

git reset --hard HEAD^//回到上一个版本,即回到上一个一commit的时候的文件状态,HEAD^^则再忘前一个
git reset --hard 'commit id'//使用commit id 也能够

git reflog //用于查看全部的有关git的命令,能够经过这个方法找到如今的commit id再回到如今

(6)撤销修改svg

git checkout -- lianxi//注意--后面有一个空格

这样能够把工做区中的文件恢复成stage区的文件。ui

git reset HEAD -- lianxi //撤销stage区的修改

看来别人的解释,以为用就近原则说比较合理,复制以下:

1.撤销工做区的修改符合就近原则:

工做区 < - 缓冲区 <- 版本库

撤销工做区修改,若是缓冲区有该文件,则checkout -- file 会将缓冲区的内容覆盖到工做区,此时工做区和缓冲区文件内容相同,所以工做区是干净的,并无未add的文件。

撤销工做区修改,若是缓冲区没有该文件,则checkout -- file命令会继续向上找,找到版本库中的该文件,此时使用版本库中的文件覆盖工做区,工做区不干净,由于有未提交的文件(从版本库中覆盖修改的文件)。

2.撤销缓冲区

撤销缓冲区,使用git rest HEAD -- file ,则会将缓冲区的内容回退到工做区,此时缓冲区被该文件被移除,工做区不干净,有未add的文件(从缓冲区移除了,状态就变成了未add)

(7)文件删除

rm lianxi//删除工做区的文件
git checkout -- lianxi//发现勿删了,想要从版本库中恢复
git rm lianxi//(1)确实想从版本库中删除文件
git commit -m "delete"//(2)确实想从版本库中删除文件

(8)github与本地git版本库的链接

就是好心人本身搭建了一个服务器叫github,而后你们能够把本地的版本库上传到上面去,可是若是是免费的话全部人均可以看到你的版本库,可是不能修改。

git remote add origin git@github.com:wuguannan/learngit.git
//orgin远程库默认名字,这一操做用于关联本地库与远程本身建立的learngit.git的库。注意此操做要在本地库下

git push -u origin master //git push 命令用于推送分支,将本地master推送到远程

git clone '地址'//从远程下载库,地址的形式能够是https或者是ssh形式