很久之前就用起了git,但都是用在从github上clone项目上,或者hexo的博客提交上,直到前段时间加入了学校的技术中心,需要用git进行文件管理,才去了解了下git的具体使用方式。
什么是git
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。它与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。它不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
工作流程
一般来说,git的工作流程分为以下几步
- clone Git 资源作为工作目录
- 在克隆的资源上添加或修改文件
- 如果源文件被修改了,可以进行资源更新
- 提交前查看修改
- 提交修改
- 修改完成后,如发现错误,可以撤回提交并再次修改后重新提交
基本使用方式
创建仓库
首先创建一个文件夹,在文件夹中右键,git bush,键入
git init
执行完该命令后,会在当前目录下生成一个.git目录。
然后我们新建一个readme.txt文件,使用Notepad++打开,随便输入一些内容。
然后执行下面步骤
$ git add readme.txt $ git commit -m "first"
这里,git commit -m后面的内容指的是对本次提交的说明,可以输入任何内容。
版本控制
我们先进行几步这样的操作,将刚才创建的readme.txt里的内容修改,然后执行提交操作,-m后面的内容就写当前次数,重复两遍差不多。这样,我们就提交了三个版本,版本1: first, 版本2: second ,版本3: third。当然,在实际工作中,并不可能记得每次修改的内容,因此,我们可以用以下命令查看。
$ git log
如果我们想退回上一个版本,那么我们可以输入
$ git reset --hard HEAD^
然后去查看一下,发现文本内容变为了第二次提交时的内容,再用git log查看,确实回退到了第版本二,那么,这是不是意味着我们退不回去了呢?当然不是,如果你知道版本3的commit id的话,还是可以返回的。commmit id?那是啥?就是在你输入 git log 时,显示的一大串内容中,每一段 commit 后面的那串字符。
$ git reset --hard id
输入上面的内容,就可以退回去了,这里 id 不一定要全输完,只需要输如一部分即可,Git会自动去找,但也不能太短,因为Git可能会找到多个版本号,就无法确定是哪一个了。
同时,git还提供了一个命令
$ git reflog
用来记录你的每一次命令,同时,使用该命令时,也会显示被修改的版本的 commit id。
远程仓库
前面讲的仓库是属于本地的,但是当这个项目是团队协作的时候,我们就需要远程仓库了。我们可以在github上创建一个仓库,输入本地仓库的文件夹名,根据GitHub的提示,在本地仓库下运行命令:
$ git remote add origin git@github.com:xxxxx/xxx.git
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样,在之后的操作中,只需要输入以下命令即可
$ git pull $ git add . $ git commit -m "" $ git push origin master
总结
这样,关于git的一些基本操作就讲完了,关于其他的一些分支管理、标签管理等就之后用到的时候再做补充了。