分布式版本控制系统
git是分布式版本控制系统,它的设计原理是:每个使用者都有一份完整的版本库。
分布式版本控制系统 也有一个“中央服务器”,但每个人的电脑上都是一个完整的版本库,中央服务器的作用仅仅是方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。这样,你工作的时候即使不联网也可以,因为版本库就在你自己的电脑上。当多个人协作时,只需把各自的修改推送给对方,就可以互相看到对方的修改了。
DVCS工作流:
git pull——从远程代码库取到最新版本,放到本地仓库中。
写一些代码
git commit——将本地修改保存到本地仓库中。
git pull——从远程代码库中获取最新的更新。
git merge——合并代码并更新到本地副本。
git commit——将合并后的代码提交到本地仓库。
git push——将更新后的代码推送到远程代码库。
git基本命令
1.git status
git status命令可以让我们时刻掌握仓库当前的状态
修改test.txt文件,添加一行“test”,然后运行git status命令看看结果:git status命令告诉我们,test.txt被修改过了,但还没有准备提交的修改。
2.git diff
git diff顾名思义就是查看difference。显示的格式正是Unix通用的diff格式,可以从git diff命令输出看到,我们在第一行添加了一个“test”单词。
3.git commit -m “注释”
commit 操作是将变动提交到本地的 Git 库。
4.git push
push 操作是将本地未提交到远程 Git 代码库的 commit 提交到远程 Git 代码库里。
5.git log
git log命令显示从最近到最远的提交日志。和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示。
6.git checkout – filename
git checkout – filename命令用于回退工作区的修改。当改乱了工作区某个文件的内容,想直接丢弃工作区的修改,回退到版本库的版本用这个命令。
7.git reset HEAD filename
不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,第二步用git checkout -– filename
补充说明
有关创建,修改仓库属性等操作建议在 GitLab 网页版进行,而进行文件上传,删除,代码更新等操作建议使用本地的命令行或客户端。
.gitignore
1.WHY?
当你使用git add .的时候有没有遇到把你不想提交的文件也添加到了缓存中去?比如项目的本地配置信息,如果你上传到Git中去其他人pull下来的时候就会和他本地的配置有冲突,所以这样的个性化配置文件我们一般不把它推送到git服务器中,但是又为了偷懒每次添加缓存的时候都想用git add .而不是手动一个一个文件添加,该怎么办呢?很简单,git为我们提供了一个.gitignore文件只要在这个文件中申明那些文件你不希望添加到git中去,这样当你使用git add .的时候这些文件就会被自动忽略掉。
2.忽略文件的原则
忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
3.使用方法
首先,在你的工作区新建一个名称为.gitignore的文件。 然后,把要忽略的文件名填进去,Git就会自动忽略这些文件。 不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
4.忽略规则文件语法
a.忽略指定文件/目录
忽略指定文件
HelloWrold.class
忽略指定文件夹
bin/
bin/gen/
b.通配符忽略规则
通配符规则如下:
忽略.class的所有文件
*.class
忽略名称中末尾为ignore的文件夹
*ignore/
忽略名称中间包含ignore的文件夹
ignore/