一、简单认识:
1、初始化文件夹为版本控制文件夹,首先建立一个文件夹,进入这个文件夹以后输入git init初始化这个文件夹。
2、Git几种位置概念
1、本地代码:本地更改完代码以后,虽然是存放在git的文件夹里面,但是没有添加到待提交列表里面。
2、待提交列表:执行完git add 文件名,但是未执行git commit -m ‘说明’命令的状态。
3、本地仓库:git会在本地建立一个本地的仓库,执行完git commit以后会提交到本地仓库里面。
4、远程仓库:例如Github、coding.net之类的远程仓库。
1、本地代码状态:
2、待提交列表(需要提交的改动):
3、本地仓库(将待提交列表的文件提交到本地仓库)
4、查看本地仓库的文件,
commit:是当前提交改动的唯一值,这个值是随机生成的。
Author:前一篇博文中讲到的全局配置或者本地目录配置里面的用户参数。
Date:提交更改的详细时间。
底下的就是提交时候-m写的改动描述,这个越详细越好,方便其他人阅读。
5、流转过程:
二、详细使用
1、初始化当前目录为版本控制文件夹
#git init(如果误操作想撤回初始化,rm -rf .git,直接删除当前目录的.git文件夹即可)
2、git add /git commit(添加到待提交列表或提交到本地仓库)
#git commit -m '描述‘ 必须要有这个参数,写什么都行,不写不让提交。
3、文件每次更改都需要重新提交一次。
4、查看状态
#git status
当我们看到一个新的git的仓库的时候,第一步要做的是查看当前仓库的状态,下面这个图例是告诉我们,暂时没有需要提交或者待提交的更改或有没有被版本控制的文件。
5、查看日志
#git log(j:向上翻,k:向下翻。Ctrl+f下一页,Ctrl+b上有一页,q:退出)
6、查看某一条提交的详细信息
#git show commit后面的号
我们对redeme这个文件里面的内容做一次更改,提交后用git log查,我们能看到这次查看的基本信息。
然后只要commit号前面的4位或者6位就行(前提是没有重复的,基本没有重复的)
红色字体:前面有个减号,说明是我们删掉的内容,加号表示是我们新增的内容。
7、撤销(reset)
从左到右是走上面的命令,从右边到左边的话走下面的命令。
这里有两种撤销方法:
1、从本地仓库撤销到待提交列表。
我们将已经提交到本地仓库的更改,撤销的待提交列表。
#git reset --soft HEAD~1(表示撤销最近的一次改动,并且放到待提交列表里面)
2、从本地仓库直接撤销到本地代码状态。
#git reset HEAD~1
从上面的命令来看,相比加上--soft软撤销,硬撤销更利索一点。
注意:撤销命令尽量少用,团队在开发过程中你也不知道你的队友更改过什么东西。
8、撤销(checkout)
说明:
#git checkout -- 文件名
当我们更改了文件内容的时候,还未执行git add 命令的时候,如果想撤销编辑,就可以使用git checkout -- 文件名的命令。如果已经执行了git add命令,就只能执行git reset命令,细心的同学会发现其实下面截图有系统提示。
执行撤销后,新增的内容没有了。
9、删除
#git rm/commit
说明:使用git rm 删除文件,前提是你已经执行了git add和git commit命令,提交到了本地仓库里面,然后才能执行删除命令,如果你还未执行git add(添加到待提交列表),这样的话只是本地文件(还受版本控制约束,直接执行命令删除即可),如果已经执行了git add想撤回的话可以使用git reset命令(下面截图系统是有提示的),只有提交到本地仓库以后的文件,执行git rm才是有效的,一定要记得任何更改都必须提交。
删除提交以后,提示没有需要提交的改动。
如果我们用git show 命令的话,就能看到具体细节,告诉我们删除了该文件。
10、忽略文件
部分不想提交的内容(例如数据库密码或者一些无关的文件,相当于过滤)
#gitigonre
首先我们在和.git同级目录下建立一个.gitigonre文件(前面还有个点),然后我们建立一个database.yml文件
打开.gitigonre文件,输入*yml(过滤所有后缀是yml的文件)
但是.gitigonre文件是需要提交的,每次更改了.gitigore文件内容,也都需要提交。
11、分支
下图中每个点都是一次提交,从左往右第二个点开始往下分开了一个分支,到从左往右第六个点后又合并成一个起。下面这个线就是一个分支。
11.1 创建和切换
现在master和brother进度都是一样的。
切换到brother分支以后,更改redeme文件内容。
切换到master分支,查看redeme文件并没有任何更改。
git log也没有任何更改。
11.2删除分支
11.3合并分支
准备合并前的环境
准备开始合并
首先先切换到要合并到的那个分支上,我这里是要把brother合并到master分支上,所以首先应该先切换到master上。
合并:
告诉我们redeme文件增加了一行,
细心的同学呢会发现合并的时候就连commit号都原封不动的合并过去了。