前面我们学习了Git最基本的用法,包括安装Git、创建代码仓库,以及提交本地代码。下面我们将学习Git更多的使用技巧,在开始之前,我们先给一个项目创建代码仓库,这里选择在ProviderTest项目中创建,打开Git Bash,进入到项目的根目录下,然后执行:git init命令,如下所示:
一、忽略文件
我们在提交项目的时候,不是所有的文件都需要加入到版本控制当中,Git提供了一种可配性很强的机制来允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的目录下是否存在一个名为:(.gitignore)的文件,如果存在的话,就去一行一行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。注意:(.gitignore)中指定的文件或目录是可以使用“*”通配符的。
Android Studio在创建项目的时候自动为我们创建了两个(.gitignore)文件,一个在根目录下,一个在app目录下,首先看一下根目录下的(.gitignore)文件(如图所示),通常这部分内容都是不用添加到版本控制当中的,简单看一下这个文件,除了:(*.iml)表示指定任意以(.iml)结尾的文件,其他都是指定的具体的文件名或者目录名,上面配置中的所有内容都不会被添加到版本控制当中,因为基本都是一些有IDE自动生成的配置。
再看一下app目录下的(.gitignore)文件:由于app目录下面基本都是我们编写的代码,因此默认情况下只有其中的build目录不会被添加到版本控制当中。
我们完全可以对以上两个文件进行任意的修改,来满足特定的需求,比如说,app下面的所有测试文件都只是给我自己使用的,我并不想把他们添加到版本控制中,那么就可以这样修改app/.gitignore文件中的内容:只需要添加两行配置,因为所有的测试文件都是放在这两个目录下的。
现在我们就可以提交代码了,先使用add命令将所有文件进行添加,再执行commit命令完成提交,如下所示:
二、查看修改的内容
在进行了第一次代码提交之后,我们后面还可能对项目不断地进行维护或添加新功能等,有可能到后面我们就忘记前面修改了什么东西了,这时候可以使用Git来查看自上次提交后文件修改的内容。
查看文件修改情况的方法非常简单,只需要使用status命令就可以了,在项目的根目录下输入命令:git status,然后Git会提示目前项目中没有可提交的文件,因为我们刚刚才提交过,现在对ProviderTest项目中的代码稍做一下改动,修改MainActivity中的代码如下:
这里我们仅仅在添加数据的时候,将书的价格改为了55.55,然后依次输入命令:git status ---> git diff
如果我们想要查看MainActivity.java这个文件的更改内容,可以使用如下命令:
git diff app/src/main/java/com/example/providertest/MainActivity.java
其中减号代表删除部分,加号代表添加的部分,从图中我们明显地看到价格修改成了55.55.
三、撤销未提交的修改
有时候我们的代码可能写得过于草率,以至于原本正常的功能,结果反倒被我们改出了问题,遇到这种情况,只要代码还未提交,所有修改的内容都是可以撤销的。比如在上一节中我们修改了MainActivity中一本书的价格,现在想要撤销这个修改,就可以使用checkout命令,用法如下:
git checkout app/src/main/java/com/workspace/hh/providertest/MainActivity.java
执行这个命令后,我们对MainActivity.java这个文件所做的一切修改就应该都被撤销了。重新运行:git status 命令检查一下,结果如图:可以看到,没有任何可提交的文件,说明撤销成功了。
不过这种撤销方式只适用于那些还没有执行过add命令的文件,如果某个文件已经被添加过了,这种方式就无法撤销其更改的内容。解决办法是:先对其取消添加,再撤回提交,取消添加使用的是:reset命令。用法如下:
git reset HEAD app/src/main/java/com/workspace/hh/providertest/MainActivity.java
然后再运行一遍:git status命令,你就会发现MainActivity.java这个文件重新变回了未添加状态,此时就可以使用checkout命令来将修改的内容进行撤销了。
四、查看提交记录
当一个项目开发了几个月之后,我们可能已经执行过上百次的提交操作,可能早就已经忘记了每次提交都修改了哪些内容,这个时候可以使用log命令来查看历史提交信息。用法如下:
输入:git log,我们看到,提交记录包括:提交id、提交人、提交日期、提交描述这4个信息。
Git使用—第二讲的更多相关文章
-
GIT 学习第二天 (二)
工作区和暂存区 工作区: 就是你在电脑里能看到的目录,比如:webgit 文件夹 就是一个工作区 版本库: 工作区有一个隐藏目录 .git ,这个不算工作区,而是Git的版本库 Git的版本库里存了很 ...
-
POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取
第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个 ...
-
Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable
原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
-
【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的
[军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的 之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...
-
《ArcGIS Engine+C#实例开发教程》第二讲 菜单的添加及其实现
原文:<ArcGIS Engine+C#实例开发教程>第二讲 菜单的添加及其实现 摘要:在上一讲中,我们实现了应用程序基本框架,其中有个小错误,在此先跟大家说明下.在“属性”选项卡中,我们 ...
-
基于微信公众平台的开发(清华大学第二讲)_Alien的笔记
基于微信公众平台的开发(清华大学第二讲)_Alien的笔记 基于微信公众平台的开发(清华大学第二讲)
-
32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数
32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...
-
常见注入手法第二讲,APC注入
常见注入手法第二讲,APC注入 转载注明出处 首先,我们要了解下什么是APC APC 是一个简称,具体名字叫做异步过程调用,我们看下MSDN中的解释,异步过程调用,属于是同步对象中的函数,所以去同步对 ...
-
PE文件格式详解,第二讲,NT头文件格式,以及文件头格式
PE文件格式详解,第二讲,NT头文件格式,以及文件头格式 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) PS:本篇博客 ...
随机推荐
-
[转]asp.net c# 网上搜集面试题目(附答案)
本文转自:http://www.cnblogs.com/hndy/articles/2234188.html 1.String str=new String("a")和String ...
-
mysql批量替换指定字符串
将字段title中的abc替换为123 UPDATE `table1` SET `title` = replace(title, 'abc', '123') WHERE `typeid` =18;
-
Bootstrap 3 How-To #3 布局
对于 Web 开发来说,一个永远的话题是如何创建一个跨浏览器兼容的布局.许多年来,各种框架使用各种技术来解决这个问题.Bootstrap 使用了一个不同的方式来解决这个问题.基于 960 像素的布局 ...
-
K最近邻算法
K最近邻(K-Nearest-Neighbour,KNN)算法是机器学习里简单易掌握的一个算法.通过你的邻居判断你的类型,“近朱者赤,近墨者黑”表达了K近邻的算法思想. 一.算法描述: 1.1 KNN ...
-
Installing — pylibmc 1.2.3 documentation
Installing - pylibmc 1.2.3 documentation libmemcached
-
Linear Regression(线性回归)(一)—LMS algorithm
(整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 1.问题的引出 先从一个简单的例子说起吧,房地产公司有一些关于Po ...
-
Ubuntu和Redhat(Debian)的差别
这两个最大的区别在包管理模式上. 都是用的Linux核心构架的. Redhat主要集中在 企业级服务器版的制作 是推动LINUX商业化最成功的公司 Redhat对应的桌面版制作 都是由Fedora社区 ...
-
【Windows】Git自动拉取
原文:https://blog.csdn.net/qq_38375394/article/details/80093003 bat脚本.windows的schtasks,也就是类似于linux的cro ...
-
pandas基本操作2
1.axes返回标签列表 import pandas as pd import numpy as np dates = pd.date_range(', periods=8) df = pd.Data ...
-
如何简单区分Web前后端与MVC
MVC是开发所有软件所必须涉及的基本几个划分 M主要负责数据与模型,V主要负责显示C主要负责交互与业务所以不管是前端还是后端,都是有MVC的.MVC是一个对于软件简单的抽象,不管是M还是V,还是C都是 ...