Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,它的开发者就是大名鼎鼎的Linux操作系统的作者 Linus Torvalds。在这里只是记录一下Git的命令的使用,通过命令的方式使用Git更加通用。首先是下载Git,网址:https://git-scm.com/ 。下载之后基本上就是一路next,值得注意的是:
这里的选择是否把git添加到PATH路径中,第一个选项:只在Git Bash中使用Git 命令,第二个选项:可以在Windows的控制台(CMD)中使用Git命令,第三个选项:还可以在CMD中使用Unix 的工具。其实选择选择哪个都可以,根据需要选择吧
安装成功之后,在鼠标右键会有两个git的选项,我们要使用的git在Gitt Bash中,打开它吧
Git初始化
接下来需要配置一下你的身份,这样在提交代码的时候Giit就知道是谁提交的。命令为:
git config --global user.name "用户名"
git config --global user.email "邮箱"
单引号双引号都行。还可以使用相同的命令来查看配置是否成功,只需要将最后的用户名和邮箱去掉即可,还可以通过
git config --list
来查看所有的配置信息
初始化仓库
我们在一个文件夹中输入一下命令来初始化仓库,注意这里需要先进入这个文件夹,可以使用 cd 路径的方式进入,也可以在这个文件夹中再右键打开Git Bash就直接进入了
git init
初始化仓库之后,会发现生成了一个隐藏状态的名为.git的文件夹,这个文件夹就是用来记录本地所有的Git操作的,如果你想删除本地仓库,只需要删除这个文件夹就行了
提交本地代码
代码仓库建立之后就可以提交代码了
比如说提交一个A.java的文件,需要先使用add命令将这个文件添加进来,可以理解为添加到一个暂存区,之后只有执行commit命令后,才会真正提交到本地仓库中
git add A.java
如果想要一次性添加多个文件,使用一个点代替文件名即可
git add .
使用commit提交到本地仓库
git commit -m 'Firrst commit'
注意:在使用commit命令时,一定要带上一个-m参数来制定提交的描述信息,没有描述信息的提交会被认为是不合法的
不过目前我们的提交都是提交到本地仓库,等会可以提交到远程仓库中(github)
忽略文件
我们在使用 .来添加所有文件时,如果存在不想添加的文件应该怎么办?Git提供了一个忽略机制允许用户将制定的文件或目录排除在版本控制之外,它会检查代码中裤的目录下是否有一个名为".gitignore"的文件,如果存在,就会一行一行的读取这个文件的内容,并将指定的文件或目录排除在外,注意.gitignore文件中是可以使用"*"通配符的。
注意:如何在Windows中创建一个没有文件名的文件,“.gitignore”文件就是一个没有文件名的,在文件名后面再添加一个".",文件名部分输入:".gitignore.",就可以成功完成创建
在Android studio中创建的Android项目,就会默认生成这个文件,我们的其他项目没有这个文件,自己手动创建一个就好了
有这个文件之后,add和commit就不会再提交这文件中对应的文件
查看修改内容
每次修改过后我们就应该进行一次提交,但是时间长了我们忘记还有那些文件修改了没有提交,Git可以帮助我们。查看文件修改情况只需要使用status命令即可
输入:
git status
我们还可以查看修改过的文件都修改了什么内容,使用git diff命令:
git diff 文件路径
可以看到会有加号和减号,加号表示新添加的内容,减号就是删除过后的东西。
注意:diff命令只适用于未提交之前查看修改的内容.
撤销未提交的修改
1.在没有执行add操作之前撤销:
使用 git checkout命令:
git checkout 文件名
2.在使用add命令后,还没有执行commit命令进行撤销,需要先执行reset命令取消添加:
git reset 文件名
注意:这两种情况都是在未执行commit情况下进行的撤销
查看提交记录(日志)
git log
就可以查看所提交的日志和每一次提交的描述,每一次提交在commit之后都有一串ID,这个提交ID我们可以使用其前7位,也可以整串拿来使用
查看每次提交具体都修改了什么内容,还是使用 git log 命名,只不过需要加上提交ID和-p参数
git log ec5fabed7ff3194a6ae858248870069002a55556 -p
查询结果如图:
注意:git log 提交ID -p 不同于diff,它适用于提交之后查看修改了什么内容。我们可以先查看log信息,然后在查看具体的某次提交过的内容
分支
分支是版本控制里面比较重要的概念,它的作用主要是在现有代码的基础上开辟一个分叉口,使得主干线和分支可以共同进行开发,且互不影响。分支的英文为branch,所以查看分支的命令为:
git branch
这个命令可以查看目前都有那些分支
接下来我们来创建一个分支:
git branch version1.0
再次通过git branch 查看就可以看到出现了两个路径,master(主干)和一个刚创建的version1.0分支,现在这两条线上的代码互不影响。可以看到现在master是绿色的,且前面有一个“*”号,说明现在还处于master上,想要在version1.0分支上进行修改,先需要切换到version1.0这个分支:
git checkout version1.0
现在就切换到version1.0的分支上了,想要再切回到master,就使用 git checkout master 就好了
当我们分支修改完成之后,记得要把分支合并好master,使用merge来合并:
git checkout master
git merge version1.0
先切换到master,然后使用merge合并version1.0的代码。当然,合并的时候可能出现代码冲突的情况,这个时候就需要自己去解决这些冲突,Git这时无法帮助你
最后,version1.0分支没用了,我们就可以删除它:
git branch -D version1.0
与远程版本库协作
github作为我们的远程版本库,我们就需要先将远程代码库克隆到本地:
git clone https://github.com/xxx/test.git
clone后面的是项目的git地址,在github上可以得到
我们在这份代码上进行修改之后,如何才能将本地修改的内容同步到GitHub?
- 先完成提交到本地仓库(add和commit操作)
- 再使用push命令
注意:这些操作需要我们进入到clone到的项目文件夹中在执行修改,提交,push
git push origin master
其中origin部分指定了同步的远程代码库的Git地址,这个Git地址存在于git/config文件中有一个url(只要是从远程代码库clone的都有这个属性,本地的没有)选项;master部分指明同步的是哪个分支。如果只有一个master分支可以简写成 git push也没有问题
接下来来看一看将GitHub的项目的修改同步到本地,使用的是pull命令
git pull origin master
如果只有一个master分支可以简写成 git pull也没有问题