1、安装git
2、cd 切换目录到你的项目根目录下(项目根目录,懂什么意思吧?)
3、在项目的根目录下,使用git init命令创建该项目对应的git初始化配置文件(该项目对应的git初始化配置是在项目根目录下的隐藏目录.git下)
4、使用git config 配置签名(即作者名与作者邮箱,这样在git本地库中就可以知道是谁提交的),有两种情况:
注意:(1)与(2)必须存在至少一个。当(1)与(2)共存时,优先使用(1)中的签名。如果没有(1),则使用(2)中的签名
(1)基于当前项目的签名
在项目根目录下使用两条命令设置签名
git config user.name 作者名
git config user.email 作者邮箱
通过这两条命令设置完签名,之后在该目录下添加/修改的文件都会被标识为 这个签名,即
其中 tom_pro是我设置的作者名,[email protected]是我随意设置的邮箱,这两者构成了Author,标识我是提交这段文件的作者。
标识可以在该项目根目录下的.git/config文件中看到。如图:
(2)全局签名
全局签名是基于当前操作系统所登录的用户的。这里看不同没关系,继续往下看。
在任何目录下使用两条命令设置全局签名:
git config --global user.name 作者名
git config --global user.email 作者邮箱
该签名的意义与(1)中的一样,只不过是当(1)中的签名不存在时才会使用全局签名。
该签名在当前用户的工作目录下(使用cd ~进入)的.gitconfig文件中配置。如图:
5、git把文件从工作区添加到暂存区中
工作区:我们直接操作的项目文件所在的区域。
暂存区:暂时存储git将要提交的文件。作用在于:可以反悔,撤销添加。
本地存储库:从暂存区中提交文件到本地存储库,此时无法撤销提交,每次提交到这的文件都会存储,只不过是不能版本而已。
这一步的使用:
使用以下命令:
git add 工作区中的文件
可以把当前项目下的指定文件添加到git暂存区中。
6.git把文件从暂存区中提交到本地存储库中
使用
git commit 暂存区中要提交的文件
提交后无法撤销,会在git中生成一个版本。。该文件以前就存在的,会变为历史版本存在,也还是可以访问到的。
7.查看git状态
在项目根路径下使用git status命令可以查看当前项目的git状态, 会提示是否 新建的文件、修改过的文件
(1)如果使用git status查看到的文件是红色的,说明工作区的文件与暂存区的文件不一致。。即:可以使用git add filename 把文件从工作区添加到暂存区。
(2)如果使用git status查看到的文件是绿色的,说明工作区的文件与暂存区的文件一致,但暂存区文件与本地库指针当前指向的版本不一致。。。即:可以使用git commit filename 把暂存区文件提交到本地库中。
8.查看git日志
使用git log可以查看日志,日志其实就是之前每次commit的数据,不过有个缺点,就是日志太长了。
使用git reflog 查看日志不仅可以更简短,而且还可以查看到head指针,以此来知道怎么访问历史版本。
9.版本回退与前进版本
先讲讲reset的参数,有三个hard soft mixed
soft:仅仅移动HEAD指针,不会对暂存区、工作区进行任何操作。
mixed:会移动HEAD指针,一会清除暂存区,不会影响工作区。
hard:移动HEAD指针,清除暂存区,把指定版本的数据覆盖工作区。
《1》使用索引值
(1)git reset --hard 索引值
作用:索引值指定版本数据会覆盖原来本地文件,并清空暂存区。
根据索引值既可以回退,也可以前进。
(2)git reset --soft 索引值
《2》使用^符号
git reset --hard HEAD^ 表示从当前版本回退一个版本
git reset --hard HEAD^^ 表示从当前版本回退两个版本
也就是说,有多少个^,就表示从当前版本回退几个版本
《3》使用~符号
不用像^一样根据^的数量来指定回退多少个版本,通过~符号加数字就可以指定回退多少版本。
git reset --hard HEAD~3 表示从当前版本回退3个版本
git reset --hard HEAD~4 表示从当前版本回退4个版本
建议:还是用索引值方式方便,另外两种方式还是要到日志中数一下要几个版本....
10.删除文件找回
前提:被删除文件在上一个版本已经被提交到本地库中了,如果没有达到该前提,则不能找回了。
回退到上一个版本就OK了,这样就可以找回上个版本的东西,不过要小心当前工作区被覆盖
11.和本地库比较文件(增加了什么,删除了什么)
git diff filename 表示 工作区中filename文件与暂存区中的filename文件进行比较,会显示出哪些行是增加的,哪些行是删除了的。
git diff HEAD^ filenme 表示与本地库中相应版本比较,HEAD^的作用就不解释了,会显示出哪些行是增加的,哪些行是删除了的。
12、分支操作
(1)创建分支
git branch 分支名
使用上面的命令则会创建名字为指定名的分支(其实就是复制一份仓库里面的所有版本数据到该分支,无论怎么操作这个分支,都不会影响原来的master分支)
(2)查看所有分支
git branch -v
如图所示,分支名前面带*号则表示当前所处的分支是哪个。
(3)切换分支
git checkout 分支名
切换到指定分支名的分支,没啥好说的。
(4)合并分支
首先,当前分支要切换到要被合并的分支上。
比如,有master与hot_fix两个分支,其中,hot_fix要合并到master上,那么当前分支就需要切换到master,合并后hot_fix分支就消失了。其实原理与提交到本地库类似。
命令:git merge 分支名
比如:使用git merge hot_fix,当前处于master分支,那么意思就是把hot_fix分支的内容合并到master上
(5)解决合并冲突问题
什么是合并冲突?意思就是,合并的两个分支中,同一个文件的同一行在不同分支中都被修改了,此时就会出现合并冲突。
当出现冲突时,冲突所在位置的文件会变为如下图所示:
这就需要用户自己手动选择或者修改自己想要哪个分支的了(别忘了把git冲突标记符号删了,即<<<<<<<< =========>>>>>>>>)
具体解决冲突的步骤如下:、