0. 基础知识
git属于分布式版本控制,通俗来说,就是整个项目没有真正意义上的官方版本,每个人在自己的电脑上都有一个属于自己的版本库,但是大家通过pull(拉回),push(推送)和commit(提交)来完成协作。
其中:
1. pull是从别人的版本库那里获取内容
2. push是把内容推到一个版本库
3. commit是提交到版本库
这里有一个版本库的概念,你可以暂时理解为存储着文件的一个文件系统(好吧,你想说文件夹也行)。
1. 安装
https://git-scm.com/downloads
按照对应的系统版本下载需要的git。
1. 初始化
强烈建议跟着用bash做一遍,十分钟左右理解。
cd /home/yexu/project/gitproject #到你想要建立项目的文件目录下
git init #这里就是你的git项目的根目录了
2. 试着提交
echo It is my first time to use git.>README #此时文件还只是存在你的本地目录,没有提交,跟别人也没有关联
git add README #此时文件可以认为是进入了一个准备提交的缓存区
git commit --message "这是一些关于本次提交的说明" #
到这里,你的文件就已经提交到本地版本库了。
这里要 解释 再次说明一个概念:
版本库和你硬盘上的文件不同,当年创建了文件时,文件就存在于你的硬盘了,但是知道你添加进版本库,文件才进入到版本库,版本库时用来和其他(人)的版本库交互的。在逻辑上相当于一个大文件夹,这里包含着你的工作文件。
3. 查看状态
git status
这个命令用以查看本地文件状态(其实就是还有哪些文件没有提交到版本库,和版本库相比有什么变化)。发现自己的文件还有没提交的就可以提交等等。
4. 显示历史
git log
git log -n 5 #查看最近5条
git log --oneline #一行显示
5.pull
为了使用这个命令第一件事可以克隆一下自己的版本库:
git clone ../gitproject ../gitproject-clone #克隆一个版本库,用来测试版本库之间的交互
然后再到clone的文件夹下修改:
cd ../gitproject-clone #到达clone目录
echo emmmm>em.txt #生成新文件
git add em.txt #添加到缓存
git commit --message emmmmm #正式提交
现在clone版本提交了,但是也只是提交到了自己的版本库里面,原有的版本库想要把clone部分的修改取回来怎么做?
cd ../gitproject #到达源目录
git pull ../gitproject-clone master #从clone版本库取回
这样就完成了从别人的版本库里取回别人的代码的工作。
6. push
但是,在多人协作的时候,大家并不知道该从哪里拿数据,因为项目是 分布式的,也就没有一个中心,大家该从哪里pull呢?可以创建一个bare版本库,这个版本库只用来汇聚大家的提交和给大家pull用的,可以想象成一个大仓库,包含所有人推送过来的版本,这是一个共享的版本库。
git clone --bare ../gitproject ../gitproject-bare.git #创建共享版本库
git push ../gitproject-bare.git master #push自己的代码到共享版本库
其他的成员就可以通过pull把你提交的代码取回。比如你在源库中push的代码,你的clone也可以pull回去。
关于push的有一点补充
//2017/10/27更新
git remote add origin https://github.com/name/
//代码意义是将远程仓库同步到本地,命名默认为origin,本地的原始仓库
报错的话:
origin does not to be a git repository
那有可能就要重新建立一下连接。
7.gitignore
虽然每次都可以通过git add
来选择想要提交的文件,但是有些文件并不想提交,比如测试文件,生成的二进制文件,环境配置相关文件,这时候可以再git的根目录生成.gitignore文件,再次查看状态时git会自动忽略那些文件,文件格式应该是按照通配符来的。一般两条规则就够了:
*.exe #表示所有exe文件都不被提交
/test/ #表示所有test文件夹下的文件都不提交
!.png #在以上规则中的例外,比如test文件夹下如果有.png图片的话还是会被提交
正文结束。
强烈推荐这本书(德国人写的,人民邮电出版社):
参考文献 《Git学习指南》 ISBN:978-7-115-43676-4