版本控制工具——Git笔记
打开Git Bash
1、配置身份
这样在提交代码是就可以通过git查到是谁提交的了
git config --global user.name "Tony"
git config --global user.email "[email protected]"
配置完成后,可以使用相同命令去查看是否配置成功,只需要将最后的名字和邮箱地址去掉即可。如下
git config --global user.name
git config --global user.email
仓库(Repository)是用于保存版本管理所需信息的地方,所有本地提交的代码都会被提交到代码仓库中,如果有需要还可以再推送到远程仓库中。
2、创建代码仓库
进入项目目录下,项目的位置为:D:\AndroidProject\firstcode\BroadcastBestPractice,如下图
然后在这个目录下,输入如下命令:
git init
提示,不知道我的项目是不是有空格或者是环境变量没有配置好,一开始输入
会提示没有找到这个文件目录,后来看遇到过这个问题的人说,加个双引号就可以解决这个问题,后来试下了,
这个没有反应,git init 后,没有任何反应,后来又试下
这样便建立了代码仓库
可以通过 ls -al 查看
如果想删除本地仓库,只需要把 .git 文件夹删除即可。
3、配置忽略文件
Git提供了一种可配性很强的机制来允许用户将指定的文件或目录排除在版本控制之外。它会检查代码仓库的目录下是否存在一个
名为.gitignore的文件,如果存在的话,就去一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。
注意:.gitignore中指定的文件或目录是可以使用*通配符的。
AndroidStudio在创建项目的时候会自动创建两个.gitignore文件,一个在根目录下,一个在app模块下。
根目录下的.gitignore文件:基本都是一些由IDE自动生成的配置。
app模块下的.gitignore文件:
需要手动修改,将所有测试文件配置上,无需上传到仓库中,如下:
4、提交本地代码
add 用于把想要提交的代码先添加进来;
commit 去执行提交操作;
比如想添加 build.gradle 文件,输入以下命令:
git add build.gradle
添加整个目录,比如是app,命令如下:
git add app
如果是一次性添加所有文件,add后面加一个.
git add .
这些警告,是因为我用Android studio开着项目,虽然还没有运行。只要把项目关闭掉,重新执行
这样就没有警告了。
现在BroadcastBestPractice项目下所有的文件都已经添加好了,提交下:
git commit -m "First commit."
在commit命令后面,一定要通过 -m参数来加上提交的描述信息,没有描述信息的提交被认为是不合法的。
5、查看修改的内容
在项目根目录下:git status
这是没有修改过的意思
这是修改后,git status查看的
6、查看更改的内容
git diff ——可以查看所有文件的更改内容
如果只想查看单个文件,比如MainActivity
git diff "app/src/main/java/com/example/administrator/providertest/MainActivity.java"
减号代表删除部分,加号代表添加部分
7、撤销未提交的修改
git checkout "app/src/main/java/com/example/administrator/providertest/MainActivity.java"
注意,这种撤销方式只适用于那些没有执行过add命令的文件,如果某个文件已经被添加过了,这种方式就无法撤销其更改内容
仍然把MainActivity的那本书价格改成55.55,输入命令
git add .
已经无法撤销了。对于这种情况,可以使用reset 命令
git reset HEAD "app/src/main/java/com/example/administrator/providertest/MainActivity.java"
已经撤销了,可以再执行checkout命令来将修改的内容撤销了。
8、查看提交记录
git log
再一次把MainActivity里的价格改成55.55,执行一次提交操作
git add .
git commit -m "Change price."
再查看下日志
git log
当提交记录非常多,只想查看某一条记录,可以在命令中指定该记录的id,并加上-1参数表示我们只想看到一行记录
git log 1d996e4cf6381f23d79733ab67e539b30f22f3aa -1
如果要看这条记录具体修改了什么内容,可以在命令中加 -p 参数
git log 1d996e4cf6381f23d79733ab67e539b30f22f3aa -p
9、分支
主要作用是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。
为什么要建立分支呢?
比如说最近推出了1.0版本,正在开发1.1版本,1.0版本存在bug需要进行修复,重新发布1.0版本,这是就进退两难了。
使用分支的话,只需要在发布1.0版本时建立一个分支,然后在主干线上继续开发1.1版本的功能,当1.0版本发现bug就在
分支线上进行修改,然后发布新的1.0版本,并记得将修改后的代码合并到主干线上即可。
查看当前的版本库有哪些分支:git branch , master表示主干线,branch表示分支线
创建一个分支:git branch version1.0 这样就创建了一个名为version1.0的分支。
*号在master分支前,说明我们的代码在master分支上
切换到version1.0分支上:
git checkout version1.0
在version1.0分支上修复的代码合并到master主干线上:
git checkout master
git merge version1.0
删除分支:git branch -D version1.0
10、与远程版本库协作
代码下载到本地:
git clone https://github.com/example/test.git
本地修改的代码提交至远程版本库:
git push origin master , 将本地代码同步到https://github.com/example/test.git版本库的master分支上
origin指定的是远程版本库的Git地址,master指定的是同步到哪个分支上
将远程版本库修改的内容同步到本地:
方法一:git fetch origin master
同步下来的代码并不会合并到任何分支上去,而会存放到一个origin/master分支上,这时我们可以通过diff命令来查看远程版本库上到底修改了哪些东西:git diff origin/master
之后再调用merge命令将origin/master分支上的修改合并到主分支上即可:git merge origin/master
方法二:git pull origin master
相当于将fetch和merge两个命令放在一起执行了,可以从远程版本库上获取最新代码并且合并到本地