Git是什么?

个分布式版本控制系统,和SVN类似,但远比SVN强大的个版本控制系统①Git可以方便的在本地进行版本管理,如同 本地有个版本管理服务器一样可以选择在合适的时间将本地版本推送到统一的版本管理服务器②Git每次会提取整个代码仓库的完整镜像,相当于对整个代码仓库都进行了一次备份,这样计时版本服务器除了问题,可以直接采用本地仓库恢复!结合本地版本管理功能,远程版本管理服务器出问题了,依然能继续写自己的代码,当他恢复的时候再提交的本地版本!Git研发初期是为了更好的管理Linux内核,不过现在已经广泛应用于各种项目中!


安装Git

若 的系统是Linux的话,直接打开shell输入:

sudo apt-get install git

大部分的系统估计都是Windows,这就要到网上下载个Git For Window了,可到下述网站下载https://git-for-windows.github.io/点 Download,跳转到 Github ,下载对应安装包即可!

点后进入页面,下载如下文件即可

或者直接下载目前最新版2.7.0v2.7.0.windows.1接着傻瓜式的下一步就可以了~ 可以找到Git Gui然后开始玩Git,不过若以后换到其他平台上,没有图形化界面 就寸步难行了!So,若 有兴趣的话,来玩命令行,以后换了系统也能正常的玩Git!


玩转Git命令行

当然Git肯定是搭配着GitHub玩才够味的,不过先来学习本地的指令先把!当 安装完Git后可以在任意位置右键,点Git bash打开的Git命令行! 可以可以点Git Init Here直接在当前目录下创建个代码仓库,又或者点Git Gui打开Gui的图形操作页面!


1.创建代码仓库

Step 1先配置下的身份吧,这样在提交代码的时候Git就可以知道是谁提交的,命令如下

git config --global user.name "coder-pig"
git config --global user.email "779878443@qq.com"

配置完成后,可以再次输入,不包括名称,可以看到已经配置成功了

Step 2找个地方创建的代码仓库,然后创建了个新的项目TestForGit,来到工程的目录下,右键,打开的Git Bash,键入下述指令完成代码仓库的建立!另外这个代码仓库其实是用来保存版本管理所需的信息,本地提交的代码都会提交到代码仓库中,于是乎可以选择还原到某个版本, 若要的话,还可以将保存在代码仓库中的代码推送那个到远程仓库中!比如GitHub!

git init

个简单的代码,代码仓库就创建完毕了!继续输入ls - al可以看到下目录下有个.git的文件夹就是他了!

也可以打开工程目录,同样看也看到.git文件夹;若想删除代码仓库只需把这个文件夹删掉即可!


2.提交本地代码

创建完代码仓库, 说下如何提交代码,是先用add命令把要提交的内容都加进来,然后commit才是真的去执行提交操作!命令例子如下, 可以一次次慢慢添加,当然也可以全部提交,直接git add .即可完成!现在工程目录下创建个readme.txt的文件试试,随便写点东西,然后依次输入下述指令

 git add readme.txt
 git commit -m "Wrote a readme file"

输入命令试试

当然若 可以add多个文件后再一次性commit,不过若改动的文件很多的话,可以git add .一次添加全部,但有是几百年都不变一次的又或者自动生成的,比如lib,gen,bin文件夹等等,可以在代码仓库的根目录下创建个名为.gitignore的文件,然后编辑里面的内容,把不需提交的文件忽略掉!

接着输入要提交时忽略的文件内容即可!

那么git add .的时候,这里的文件就不会add,另外可能 会觉的commit后面写-m "xxx"很麻烦,想偷懒,但还是写上吧!输入的是本次提交的声明,比如自己修改了些什么!就好像写代码的时候, 偷懒不写注释,过几天 连自己写的什么鬼都不知道...


3.查看修改内容

好吧,前面用git add提交了整个项目到本地仓库, 改点东西,然后使用git status可以查看修改的部分,比如,删掉MainActivity.java里的菜单的代码以及多余的菜单相关的包!

他就会提示哪些文件发生了改变,但是还没有提交,若想看下具体更改了什么,可以用到git diff命令,另外,按Q可以退回命令行输入!


4.查看提交记录

当然随着项目的深入,Commit的次数也会越来越多,可能 早已忘记每次提交都修改了什么内容,没事,Git帮 记着呢,使用git log即可查看历史提交信息!键入

git log

回车

取其中一小部分来分析

commit defd8af52be5183dfceb3e5cf23f78ea47d013b0
Author: coder-pig <779878443@qq.com>
Date:   Fri Jun 19 17:00:36 2015 +0800
MainActivity Delete Menu

依次是

  • 此次提交对应的版本号
  • 提交人姓名 邮箱
  • 提交的时间
  • 提交版本修改的内容就是commit -m "xxx"里的xxx

5.撤销未提交的修改

比如刚提交了个版本,然后又乱七八糟地写了一堆东西,突然发现不小心误删了东西,然后ctrl + s保存了,这个时候是不是欲哭无泪,不过有Git,只需个checkout命令即可撤销更改,当然是 还没add的情况,比如在MainActivity里随便添加一条语句,然后ctrl + s保存代码!

然后命令行键入git diff

这里可以看到改的内容,可以回去把这句代码删掉,但是若改的有上千行 怎么改,于是乎这个时候可以使用

git checkout src/com/jay/example/testforgit/MainActivity.java

然后会 发现,新写的代码没了!duang一下就没了,不信 可以自己试试

若已经add了的话,那么checkout是没任何作用的,要先取消添加才可以撤回提交,使用下述指令

git reset HEAD src/com/jay/example/testforgit/MainActivity.java
git checkout src/com/jay/example/testforgit/MainActivity.java

6.版本回退

第五点教了 撤销未提交的修改,但加入提交了,想回退到之前的某个版本怎么办?第四点中可以通过git log查看的提交记录,要从这里获取个版本号, 只要前七位字符就够了;另外在Git中,用HEAD代表当前版本,上个版本就是HEAD^,再上个版本就是HEAD^^依次类推!先Git Log看下版本历史先!

回到前个提交的版本吧,依次键入下述指令

 git reset --hard HEAD
 git reset --hard HEAD^
 git log

这时看下的控制台

可以看到已经回退到了前个版本了,当然 可以直接这样写

git reset --hard ad2080c

就是这么简单!回退后, 突然后悔了,想回退回新的那个版本,可是遗憾的是, 键入git log却发现没有了最新的那个版本号,这怎么办呢...没事,Git中给 提供了这颗"后悔药",Git记录着 输入的每一条指令呢!键入

git reflog

会发现,版本号就在这里

然后键入

git reset --hard ad2080c

可以看到又回到了最新的那个版本了,就是这么溜!

7.本节小节

介绍了项目管理工具Git来管理的本地仓库,学习了基本的命令行操作,相信会给 的项目开发带来便利,当然本地远远是不够的,下节将学习如何将的项目托管到GitHub上!敬请期待~