git手记

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

猜你喜欢

转载自blog.csdn.net/sinat_26114733/article/details/77801272