Git时间——初识版本控制工具
安装
在Git官网下载相应系统和版本的安装包。
配置身份,区分谁提交了代码
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
查看是否配置成功
git config --global user.name
git config --global user.email
创建代码仓库
进入需要创建代码仓库的项目的根目录,如AccountingApp,所有本地代码提交的代码会被提交到代码仓库中,如果有需要也可以推送到远程代码仓库中,执行以下命令:
git init
执行后在其根目录会生成一个隐藏的.git文件夹,用来记录本地所有的git操作,可通过ls-al命令来查看。
ls -al
如果想要删除本地仓库,只需要删除这个文件夹就行了。
提交本地代码
提交代码主要用到两个命令——add和commit。
add用于把想要提交的代码先添加进去。
commit则是真正地去执行提交操作。
git add build.gradle // 添加build.gradle;添加单个文件
git add app // 添加app这个目录;添加一个目录
git add . // 添加该项目下所有的文件;添加所有文件
git commit -m "First commit." // 真正提交代码;-m参数表示为该次提交添加信息描述,若没有会被认为是不合法的
Git时间——版本控制工具进阶
忽略文件
项目里的所有文件并不是都需要提交的。AS生成的项目中存在两个.gitignore文件,一个在根目录下,一个在app模块下,该文件是用来告诉git那些文件不需要提交,每一行代表要忽略的文件或是一类文件。配置好后,直接提交即可。
查看修改内容
查看文件修改情况的方法非常简单,只需要使用status命令就可以了,在项目的根目录下输入如下命令:
git status
比如修改MainActivity.java这个文件,然后执行git status
命令。
如何才能看到更改的内容呢?这就需要借助diff命令了,用法如下:
// 查看所有文件的更改内容
git diff
// 查看指定文件的更改内容,如MainActivity.java
git diff app/src/main/java/com/jwstudio/accountingapp/MainActivity.java
其中,减号代表删除部分,加号代表添加部分。
撤销为提交的修改
有时候我们的代码可能会写得过于草率,以至于原本正常的功能,结果反倒被我们改出了问题。遇到这种情况时也不用着急,因为只要代码还未提交,所有修改的内容都是可以撤销的。
比如之前修改的MainActivity.java,可以使用checkout命令,用法如下所示:
git checkout app/src/main/java/com/jwstudio/accountingapp/MainActivity.java
重新运行git staus
命令检查一下。
不过这种撤销方式只适用于那些没有执行过add命令的文件,如果某个文件被添加过了,这种方式就无法撤销其更改内容。
只不过对于已添加的文件我们应该先对其取消添加,然后才可以撤回提交。取消添加使用的是reset命令,用法如下所示:
git reset HEAD app/src/main/java/com/jwstudio/accountingapp/MainActivity.java
然后运行一遍git status
命令,之后再执行checkout操作。
查看提交记录
可以使用log命令查看历史提交信息,用法如下所示:
git log
可以看到,每次提交记录都会包含提交id、提交人、提交日期以及提交描述4个信息。
当提交记录非常多的时候,如果我们只想查看其中一条记录,可以在命令中指定该记录的id,并加上-1参数表示我们只想看到一行记录,如下所示:
git log 52e3d157982aeb0810532a0aebed519915d5e2ae -1
而如果想要查看这条提交记录具体修改了什么内容,可以在命令中加入-p参数,命令如下:
git log 52e3d157982aeb0810532a0aebed519915d5e2ae -1 -p
Git时间——版本控制工具的高级用法
准备阶段:进入一个新的项目的根目录,然后打开Git Bash,然后执行提交操作:
git init
git add .
git commit -m "First Commit."
分支的用法
分支是版本控制工具中比较高级且比较重要的一个概念,它主要的作用就是在现有代码的基础上开辟一个分叉口,使得代码可以在主干线和分支线上同时进行开发,且相互之间不会影响。
如果想要查看当前的版本当中有哪些分支,可以使用以下命令:
git branch
创建一个分支,命令如下:
git branch version1.0 // 名为version1.0的分支
分支前面的“*”号表示我们的操作还是在该分支上,可以使用以下命令进行切换:
git checkout version1.0 // 切换到分支version1.0上
各分支的操作互不影响。
可以使用以下命令对分支进行合并:
git checkout master
git merge version1.0
仅仅这样简单的两行命令,就可以把在version1.0分支上修改并提交的内容合并到master分支上。当然。在合并分支的时候还有可能出现冲突的情况,这个时候就需要静下心来慢慢地找出并解决这些冲突。
可以使用如下命令将不要的分支删除:
git branch -D version1.0
与远程版本库协作
所有版本控制工具最重要的一个特点就是可以使用它来进行团队合作开发。每个人的电脑上都会有一份代码,当团队的某个成员在自己的电脑上编写完成了某个功能后,就将代码提交到服务器,其他成员只需要将服务器上的代码同步到本地,就能保证整个团队所有人的代码都相同。
因此,需要有一个远程的版本库!
以GitHub作为示例:
- 登录GitHub,若没有账号注册一个。
- 点击右上角“加号”,选择“New repository”,然后填写“Repository name”,还有填写描述“Description”,public和private表示是公开还是私有的。
- 创建完成后,复制Git地址,比如https://github.com/example/test.git,有HTTP和SSH两种方式。
- 执行以下命令:
git init
git add .
git commit -m "First Commit."
git remote add origin https://github.com/example/test.git // 与GitHub进行关联
git push -u origin master // 会提示让你使用GitHub账号登录
- 在GitHub上刷新下,会发现本地代码已成功上传。
- 大致的流程就是这样子,可以根据需求更改。
其中,origin部分指定的远程版本库的Git地址,master部分指定的是同步到哪一个分支上。
比如说现在有一个远程版本库的Git地址是https://github.com/example/test.git,就可以使用如下命令将代码下载到本地:
git clone https://github.com/example/test.git
接下来看一下如何将远程版本库下的修改同步到本地。Git提供了两种命令来完成此功能,分别是fetch和pull,fetch的语法规则和push是差不多的,如下所示:
git fetch origin master // origin含义同上
执行这个命令后,就会将远程版本库上的代码同步到本地,不过同步下来的代码并不会合并到任何分支上,而是会存放到一个origin/master分支上,这是可以通过diff命令来查看远程版本库上到底修改了那些东西:
git diff origin/master
之后在调用merge命令将origin/master分支上的修改合并到主分支上即可,如下所示:
git merge origin master
而pull命令则是相当于将fetch和merge这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地,如法如下所示:
git pull origin master
Git时间——将代码托管到GitHub上
可以使用一个新的项目从头到尾进行实战!
补充
- 廖雪峰-Git教程
-
git commit --amend
:既可以对上次提交的内容进行修改,也可以修改提交说明。需要先对修改后的代码进行手动git add
,再执行命令。执行该命令后,直接push
一般会失败,原因是分支落后,可以解决问题后再push
;也可以使用强推git push --force-with-lease origin 远程分支名称
。(参考博客) - 撤销push,并同步到远程
-
git revert <commitId>
:撤销指定的commit
,对其它commit
没影响 -
git stash
:暂存当前分支的改动,针对还没开发完的分支 -
git stash pop
:恢复当前分支的改动 -
git stash list
:查看是否有stash
操作 -
reset
:在本地reset后,同步到远程仓库参考博客