Git使用教程之本地仓库的基本操作

在菜鸟教程中看了一篇讲Git本地使用的教程,发现写的特别好,故搬至简书,广而告之。

Git是什么?

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

安装Git

Linux

如果你的系统是Linux的话,直接打开shell输入:
sudo apt-get install git

Windows

需要我们到网上下载一个Git For Window了,可到Github网站下载,下载对应安装包即可!

Mac

brew install git

实用Git命令行

Windows在想要使用的文件夹中右键,选择Git Bash,Linux和Mac直接在命令行工具中切换到目标目录即可。

1.创建代码仓库

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

git config --global user.name “Coder”
git config --global user.email "yourname@mailbox.com"
配置完成后,我们可以再次输入,不包括名称,可以查看我们的配置。

Step 2:找个地方创建我们的代码仓库,然后我创建了一个新的项目:TestForGit,来到工程的目录下,打开我们的Bash,键入下述指令完成代码仓库的建立。

git init
继续输入:ls - al可以看到下目录下有个.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的文件,然后编辑里面的内容,把不需提交的文件忽略掉!

cat .gitignore

/gen/
/bin/
/data/
project.properties

那么我们git add .的时候,这里的文件就不会add。

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
当然,如果我们已经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
就是这么简单!回退后,你突然后悔了,想回退回新的那个版本, 可是遗憾的是,你键入git log却发现没有了最新的那个版本号,这怎么办呢?
Git中给你提供了这颗"后悔药",Git记录着你输入的每一条指令呢,键入:
git reflog
你会发现,版本号就在这里。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容