Android进阶中级教程——1.1 Git的本地使用详解

Android进阶中级教程——1.1 Git的本地使用详解

标签(空格分隔): Android进阶


1.引言

在之前的Android基础入门系列我们就讲解过Git的简单使用了,进阶系列我们

系统地对Git进行讲解,基本命令的使用;工作区,暂存区,历史仓库,远程仓库的概念,

团队协作中的分支管理,Android Studio中使用Git等;Git是一个快速的分布式的版本

控制系统,和其他的版本控制系统的差别在于Git直接记录快照,而不是差异比较!

差异比较的版本控制系统只关心文件内容的具体差异,然后每次记录哪些文件做了更新,

以及更新了哪些行的内容!当我们想切换到以前某个版本的时候,我们需要merge,而

Git在每次commit时,都会完整的存储当前版本所有修改的文件,而不是只存储diff,

所以想切换都某个历史版本只需简单的reset即可!


2.Git的几个部分

在开始使用Git之前我们先要知道Git的四个部分:

下面就来分别介绍这四个部分:

工作区就不用说了,我们当前的工作空间;而另外三个部分,我们举个形象点的例子来帮助理解吧:

大家都应该网购过吧,比如逛某猫超市的时候,看到心仪的商品,我们可以把商品加入到

购物车(暂存区),我们可能会频繁地添加商品(add)又或者移除商品(checkout),

这个过程我们可以随便嗨,反正还不用给钱;当我们挑得七七八八,接着我们就要提交我们的订单了,

点击提交订单(commit),会生成一个商品订单列表(快照),我们还可以在提交的时候加点

备注信息,比如要什么颜色之类的(commit -m “颜色”),此时订单还没有付款(push),我们

可以在自己账户的未处理订单列表(本地仓库)中找到我们的这个订单(快照),也可以看到自己

以前的一些订单记录;好吧,接着我们选择这个还没付款的订单,然后进行付款(push),付款

完成后,商家(远程仓库)就会收到你的这个订单,然后发货…

相信有了这个图以及网购的形象化例子,你应该能理解Git的四个部分的概念了,而Git的操作

大部分都是在本地执行的,下面是Git的下载安装


3.Git的下载安装

安装完Git后,我们就可以打开Git命令行:

Windows在任意位置右键,点击Git Bash打开Git命令行

Ubuntu下直接打开Terminal就可以,Terminal的快捷键是:ctrl + alt + t

这里说下为什么要使用命令行:

逼格高,命令熟悉后可以没事无情秀一波;当然,其实更多的减少跨平台后使用Git的成本,

比如你熟悉了Win下某个Git的GUI工具,但是加入某一天你要迁移到Linux上,全是命令

行,你怎么玩…或者需要换另一个新的GUI工具,你又需要花时间去熟悉这个工具的使用。

看自己吧,也没一定要命令行,你也可以用图形化工具,后面也会讲下在Android Studio上使用Git!

PS:本来是打算在Ubuntu下完成命令演示的,后来发现截图后还要自己处理截图,因为

Ubuntu只能全屏截图或者窗口截图,所以,直接在win上进行演示了~


4.设置您的身份信息

安装完Git要做的第一件事就是配置你的身份信息,团队开发,万一哪里错问题了,谁背锅?是把!

键入下述指令:

git config --global user.name "coder-pig"
git config --global user.email "[email protected]"

配置完后,把”“部分信息去掉,输多一次上面的指令,可以看到是否配置成功

也可以键入下述指令来查看所有的git设置:

git config --list


4.获取帮助

和其他的命令行一样,git同样带有help指令,当遇到没见过或者忘记了的命令的时候,可以键入:

git help init

把init改成你要查询的那个指令即可!比如git help add

win下会打开一个Git的Manual(手册)的页面,可以在之类查看指令的一些用法

Ubuntu下则会直接在命令行输出:

你也可以到Git官方手册查找对应指令!


5.创建本地的代码仓库

你可以直接键入下述指令创建一个新的带Git仓库的项目:

git init GitForTest

把GitForTest改成你想创建的工程名即可!接着我们可以来到新创建的工程的目录下,这里需要

修改下让隐藏文件可见,就可以看到.git的文件夹里,里面东东就是我们git仓库的东东了,切记

别随意去改或者删除里面的东西!(你也可以键入:ls -ah来查看隐藏文件)

当然假如你已经有项目了,想在之前项目的基础上添加Git仓库,那么通过命令行或者git bash来到当前工程的文件夹目录下,键入下述指令即可为你的项目添加本地Git仓库:

git init

6.将文件放入暂存区

我们可以把新建或者修改过后的文件,我们可以通过git add指令添加到暂存区

你可以用下面的指令,一个个文件的添加:

git add README.md

要添加的文件很多,觉得添加起来很麻烦,你可以一次性添加多个:

这里说下一个名词:tracked代表已经加入Git仓库,untracked代表还未加入Git仓库!

1)将所有tracked文件中被修改或已删除的文件信息添加到Git暂存区,不会处理untracked的文件!

git add -u

2)将所有tracked文件中被修改或已删除的文件信息添加到Git仓库,会把理untracked的文件信息

也加入Git暂存区

git add -A

3)把当前工作区的所有文件全加入到Git暂存区

git add .

除了上面两种外,git其实还提供了交互界模式,我们可以键入:

git add -i

上图的流程是这样的

1.我现在GitForTest的文件夹里创建了两个文件

2.键入git add -i,进入后,键入4,选择添加untracked的文件

3.他给我们列出了untracked的文件,然后我们根据序号来添加文件

4.输入?会弹出相关提示,然后直接回车,结束选择!

5.然后再次输入git add -i,输入4,可以看到已不存在untacked的文件了!

当然还有其他几个指令,限于篇幅,有兴趣的可以自己研究研究!


7.将暂存区的内容提交到本地仓库(History)

我们可以通过git commit -m “xxx”指令将暂存区的内容提交到仓库中

git commit -m "修改了xxx"

后面的-m是对本次提交的说明,”xxx”是说明内容,不该偷懒省去,假如你这里不

输入,-m “xxx” 的话,也会让你进入Vim来编写声明信息的~所以建议还是在这里进行提交内容的说明吧!

另外,我们的项目可能存在一些几百年不变的或者自动生成的文件,比如lib,gen,bin文件夹等,我们没必要

每次都把这些都commit,我们可以在.git同级的目录下创建一个名为.gitignore的文件,然后编辑内容,把

不需要提交的文件写上,那么commit的时候就会自动忽略这些文件的了~:


8.查看当前工作区与暂存区的状态

我们可以用git status指令来查看工作区与暂存区的当前情况,比如工作区有什么文件和暂存区的文件

对比,发生了改变,要不要add下?又比如暂存区里有东西add了,但是还没提交等等,直接键入下述指令即可:

git status

比如我这里修改了下README.md文件~

只是改了没add:

add文件后:

commit提交暂存区内容

恩,很简单,另外,你还可以用下述指令,让结果以简短的形式输出~

git status -s

9.查看工作区与暂存区的差异

上面我们可以通过git status获取当前工作区与缓存区的状态,仅仅是状态,

假如我们需要查看发生改变的内容,那么你需要键入下述指令:

git diff

这样就可以看到当前的工作区与暂存区中对比,做了哪些修改!

PS:上面是我们在README.md文件里添加了一条语句,然后再输入git diff!


10.查看提交更改的记录

还记得上面的网购的例子吗,我们可以在我的订单中找到自己的订单记录,

同样,在git中,我们也可以查看所有commit的记录!可以键入下述指令:

git log

当然,你也可以调用下述指令获得更精简的结果

git log --oneline

如果上面还满足不了你的话,可以参考:Viewing the Commit History

对log进行定制,比如:


11.删除文件 + 文件恢复(未add到暂存区)

我们可以直接右键删除一个文件,又或者进入命令行,键入rm xxx.xxx将文件删除,但是删除的仅仅是

当前工作区里的文件,暂存区里还是存在着该文件的,所以此时你键入git status的话,会发现:

git告诉你工作区的文件被删除了,然后你有两种选择:

1)把暂存区里的文件也删了,那么键入:

git rm "xxx.xxx"
git commit -m "xxx"

2)误删了,将暂存区的文件恢复到工作区,那么可以键入:

git checkout -- xxx.xxx

duang!被删除的文件又回来了~

当然,上面的checkout不止适用于误删文件,当你把一个文件改得面目全非的时候,

你突然后悔了,但是你已经ctrl+s保存了很多次代码了,你可以用用上述指令回到

这个文件的最初样子!(前提是你还没add!)


12.文件恢复(已add到暂存区,未commit)

假如你已经把文件用git add到了暂存区,那么此时你直接用checkout文件是没有作用的!

我们需要通过git reset指令来废除此次修改记录(版本回退),让当前文件回到上一次提交时的状态!

键入:

git reset HEAD xxx.xxx

此时再调用:

git checkout -- xxx.xxx

文件即可恢复原样!


13.文件恢复(已commit)——版本回退

假如,我们的文件修改已经commit了,而你无端端的又后悔了,想恢复成上一次commit时的文件,

又或者上上次的,这时候你可能开始方了,不过Git为我们提供了时光机(版本回退),我们可以

通过下述指令回退到上一个版本:

git reset HEAD^

恩,我们键入git log后可以看到版本已经回退到上一个版本了!

如果是上上个版本,你只需加多^,再上一个版本继续加^,如此类推!

当然,除了上面的形式,你还可以根据版本号来回退,比如这里我退到第一个版本:

git reset --hard 8c3f91f

嘿嘿,无压力,你突然又后悔了,想回到新的那个版本,嗯…好吧,同样是上面的指令:

不过版本号改成最新那次commit的版本号就可以了!

git reset --hard cf2d155

你可能会支支吾吾的过来对我说:”恩,那个我刚刚把命令行关了,那个最新的版本号找不着了,

git log也找不到那个最新的版本号,那我是不是不能回未来了?”幸运的是,Git时光机会记录

你输入的每一条指令,你只需键入下述指令:

git reflog

拿到版本号,git reset即可~


14.Git命令自动补全

输入Git命令的时候按两次Tab就可以了!


15.Git命令别名

如果想偷懒,想少敲几个字母,可以为命令设置别名,然后键入别名就调用对应指令,比如将status设置成st:


16.小结

本节给大家详解了Git的本地使用,大部分时间我们都是在本地上进行Git的一些操作,所以熟

悉这些命令很重要!当然这是需要一点点积累的,敲多了,敲起来就行云流水了!下节开始,我们

来学习远程仓库,分支管理,团队开发中的协作,等等~谢谢!



参考文献

时间: 2024-08-06 07:57:11

Android进阶中级教程——1.1 Git的本地使用详解的相关文章

Android基础入门教程——2.5.2 Notification(状态栏通知)详解

Android基础入门教程--2.5.2 Notification(状态栏通知)详解 标签(空格分隔): Android基础入门教程 本节引言: 本节带来的是Android中用于在状态栏显示通知信息的控件:Notification,相信大部分 学Android都对他都很熟悉,而网上很多关于Notification的使用教程都是基于2.x的,而 现在普遍的Android设备基本都在4.x以上,甚至是5.0以上的都有:他们各自的Notification 都是不一样的!而本节给大家讲解的是基于4.x以

Android基础入门教程——2.3.1 TextView(文本框)详解

Android基础入门教程--2.3.1 TextView(文本框)详解 标签(空格分隔): Android基础入门教程 本节引言: 学习完Android中的六大布局,从本节开始我们来一个个讲解Android中的UI控件,本节给大家带来的UI控件是:TextView(文本框),用于显示文本的一个控件,另外声明一点,我不是翻译API文档,不会一个个属性的去扣,只学实际开发中常用的,有用的,大家遇到感觉到陌生的属性可以查询对应的API!当然,每一节开始都会贴这一节对应API文档的链接:TextVie

Android实战简易教程-第一枪(Spinner控件详解)

本教程简单实用,大家喜欢的话可以关注我,谢谢! 下拉列表框是一种常见的图形组件,与其他选择组件相比,可以有效的节省屏幕空间,在Android中可以使用android.widget.Spinner类来实现. 下拉列表框中的列表项有以下两种配置方式. 方式一.通过资源文件配置,例如定义一个values\city_data.xml的文件,在定义数据内容时需要使用<string-array>元素指定,定义内容如下: <?xml version="1.0" encoding=&

【Android进阶系列教程】前言

起因 因为初学Android的时候还没有写博客的意识,现在Android的门是入了,正在进阶的道路上行走,但是就这一路也走了不少的弯路.我想,总得来说Android入门还是比较容易的,网络资源比较丰富,就连Google官方都提供了eclipse+SDK+ADT的集成(当年是要自己装ADT插件配置的),下载下来解压->打开eclipse->直接就helloworld了.然后自己按照书上搞几个Activity互相跳转,监听几个按钮也能做出各种有意思的玩意儿. 现在想起来,入门真的没啥特别大的难度.

Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 标签: Android下拉刷新pullToRefreshListViewGridView 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git hub上的控件:pull-to-r

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

Web攻防系列教程之跨站脚本攻击和防范技巧详解

Web攻防系列教程之跨站脚本攻击和防范技巧详解[XSS] 收藏:http://www.rising.com.cn/newsletter/news/2012-04-25/11387.html 来源:瑞星 2012-04-25 14:33:46 摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性 以及XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么,又该如何进行有效的防范呢?本文对此进行了 有针对性的具体

Android编程之Fragment动画加载方法源码详解

上次谈到了Fragment动画加载的异常问题,今天再聊聊它的动画加载loadAnimation的实现源代码: Animation loadAnimation(Fragment fragment, int transit, boolean enter, int transitionStyle) { 接下来具体看一下里面的源码部分,我将一部分一部分的讲解,首先是: Animation animObj = fragment.onCreateAnimation(transit, enter, fragm

Android ActionBar 关于tab的应用 以及 TabListener的方法详解

actionBar的tab标签应用以及TabListener的方法详解 package com.example.actionBarTest.actionBarTab; import android.app.*; import android.os.Bundle; import com.example.actionBarTest.R; import java.util.ArrayList; import java.util.List; /** * Created by Heyiyong on 20