前言

GIT是非常优秀的源代码版本管理工具,经过几年的发展,已经变得非常成熟以及流行,不同于其他的源代码管理系统,值得使用。GIT官网下载在线安装包,经常会中途退出,很有可能的原因是被墙了,所以建议使用别人搞好的离线安装包进行安装。

GIT是啥

公元的某一天,Linux内核源代码版本控制系统的作者因某因突然宣布说我的这个版本控制系统不再免费,很多Linux内核开发者慢慢弃用这个软件。Torvalds大神决定寻找新的替代品,新的替代品必须符合几个要求:开源免费,高性能,支持分布式,支持非线性工作流,安全健壮,找了一段时间,发现没有符合要求的版本控制系统。这该肿么办呢?这个肯定难不倒大神,大神决定自己撸一个,大概花了不到2周的时间,一个可用的版本搞出来了,经过压力测试,分支合并速度贼快,大神很满意,于是乎用于Linux内核项目了。随着功能的不断完善,越来越多的开发者使用GIT来管理他们的代码,GIT就这样在开发者之间流行起来了。GIT来自于英国的俚语,意为“不受欢迎的人”,在GIT帮助文档中,大神把它描述为“傻瓜内容追踪器”,大神还是一位很有个性的人呵!说了这么多,到底GIT是啥玩意呢?GIT是开源免费源代码版本控制系统,支持分布式,分支合并功能非常强大,响应速度快。
(备注:此段内容根据查到的资料自己YY的^_^^_^)

GIT开发流程


1.从远程仓库完整克隆一份到本地仓库
2.开发人员在本地仓库编辑源码
3.开发人员对本地仓库添加,提交,分支,合并等操作
4.开发人员各种修改日志会记录到本地仓库
5.开发人员打一个补丁发给主程开发人员
6.主程开发人员会检查补丁,确认没问题开发人员所做改动会PUSH到远程仓库
7.其它开发人员可以PULL远程仓库,把修改的代码合并到自己本地仓库中

GIT安装
1.参考git pro 教程安装这一小节
http://git.oschina.net/progit/1-%E8%B5%B7%E6%AD%A5.html#1.4-%E5%AE%89%E8%A3%85-Git
2.离线安装
http://www.cnblogs.com/fantacity/p/4347472.html

GIT配置
1.全局配置 用户家目录下 .gitconfig
2.本地版本库局部配置 工作目录 .git/config
3.查看配置项

$ git config -l 

4.设置全局配置

$ git config --global key value

5.设置局部配置

$ git config key value

6.使用GIT之前需要配置好的项:用户名和电子邮件(日志记录会永久保存)
a.用户名

$ git config --global user.name wadeyu

b.电子邮件地址

$ git config --global user.email wadeyu@boyaa.com

c.设置记住用户名密码[git版本大于等于1.7.10](执行命令时,不用每次都需要输入密码以及用户名)

$ git config --global credential.helper wincred

GIT帮助命令

$ git help xxcmd

GIT常用命令

1.创建一个版本库

$ cd xx
$ git init

2.增加内容
a.添加指定的文件

$ git add file1 file2 ...

b.添加所有未被追踪的文件

$ git add -A

3.移除文件(执行完之后,需要提交版本)
a.移除暂存区域以及工作区文件(备注:-f表示强制移除)

$ git rm -f filename 

b.只移除暂存区域,工作区文件不删除

$ git rm --cached filename

c.文件名正则模式

$ git rm log/\*.log

d.递归删除当前目录及其子目录中所有 ~ 结尾的文件

$ git rm \*~

4.提交内容
a.提交已添加至追踪的文件

$ git commit -m "本次提交说明"

b.提交所有的文件至本地仓库中

$ git commit -a -m "本次提交说明"

5.移动文件

$ git mv file_from file_to

(备注:相当于执行了这3条命令 1.mv file_from file_to 2.git rm file_from 3.git add file_to)

6.查看版本库状态

$ git status

7.比较不同文件区域差异
a.文件所在区域:工作目录,暂存区域,本地版本仓库
b.比较工作目录中当前文件和暂存区域快照之间的差异

$ git diff

c.查看已经暂存起来的文件和上次提交时的快照之间的差异

$ git diff --cached (备注:GIT1.6.1之后的版本支持,git diff --staged写法)

8.提取版本库中的数据覆盖工作树中的数据

$ git checkout -f file-name

9.拷贝远程仓库

$ git clone git://github.com/schacon/grit.git workdirname

10.查看提交历史

$ git log 

常用参数说明
-p 展开显示每次提交的内容差异
-(n) 仅显示最近的 n 条提交
--since, --after 仅显示指定时间之后的提交
--until, --before 仅显示指定时间之前的提交
--author 仅显示指定作者相关的提交
--committer 仅显示指定提交者相关的提交
--stat 显示简要的增改行数统计
--graph 显示ASCII图形表示的分支合并历史
--pretty 可以指定使用完全不同于默认格式的方式展示提交历史

$ git log --pretty=oneline 每个提交信息一行显示 (备注:short,full,fuller,format)

(备注:format可以自定义需要显示的格式)

$ git log --pretty=format:"%h- %an, %ar : %s"

选项 说明
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明

$ gitk (备注:图形化工具查看提交历史)

11.撤销操作
a.修改最后一次提交

$ git commit --amend

b.取消已经暂存的文件

$ git reset HEAD filename

c.取消对文件的修改

$ git checkout filename

远程仓库
1.查看当前的远程仓库

$ git remote -v

2.添加远程仓库

$ git remote add [shortname] [url]

3.从远程仓库抓取数据

$ git fetch [remote-name|remote-url]
$ git pull [...]

(备注:fetch不会合并当前分支,只拉取差异到本地,需要手动合并;pull会自动合并到当前分支)

4.推送到远程仓库

$ git push [remote-name] [branch-name]

5.查看远程仓库信息

$ git remote show [remote-name]

6.远程仓库重命名

$ git remote rename [old-name] [new-name]

7.删除远程仓库

$ git remote rm [remote-name]

逆转与恢复

$ git reset [--mixed | --soft | --hard] [<commit-ish>]

1.命令选项说明
a. --mixed
仅重置索引位置,不改变工作数中的任何东西
b. --soft
既不触动索引位置,也不改变工作树中的内容
c. --hard
将工作树中内容与索引都切换到指定的版本位置中,也就是说自 <commit-ish> 之后的所有的跟踪内容和工作树中的内容都会全部丢失

忽略某些文件
1.工作目录配置.gitignore文件
2..gitignore文件格式规范
a.所有空行或者以注释符号 # 开头的行都会被 Git 忽略
b.可以使用标准的 glob 模式(备注: shell 所使用的简化了的正则表达式)匹配
c.匹配模式最后跟反斜杠(/)说明要忽略的是目录
d.要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反

后记

这个是学习GIT的开篇,后面还会继续学习GIT更加高级的特性,业余折腾的项目中会使用GIT作为源代码管理工具

参考资料

[1]维基百科GIT介绍

https://en.wikipedia.org/wiki/Git_(software)

[2]Pro GIT 中文版

http://git.oschina.net/progit/

[3]百度百科GIT介绍

http://baike.baidu.com/link?url=5tEZW3BXc3fTsWEIAeX4vBcV2e8ONj0JKIi8e7aiXBFHxTWI3VuhVY8yatOpgsnNPKOLtiaZkVdeIez9m-kss0yk_6roftZWJMRlwoLqvkC

认识GIT之入门的更多相关文章

  1. GIT 从入门到放弃大整理

    跟着廖雪峰学 GIT  http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GUI f ...

  2. 第三章 Git的入门 - 读书笔记

    Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...

  3. git简单入门

    git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...

  4. Android系统移植与驱动开发--第三章 Git使用入门及在学习中有感

    第三章 Git使用入门 使用Git的目的是减少各种版本的Linux的压缩大小,提供源代码在Linux上进行编译. 在这一个章节中,其实就是关键步骤的操作,虽然Git与我们学习的android没有很大的 ...

  5. 让 Python 带你进入开源的世界——Git 从入门到与他人协作开发

    让 Python 带你进入开源的世界--Git 从入门到与他人协作开发 我认为开源社区中有很多优秀的资源,并且可以帮助进阶中的程序员提高编程能力和水平.所以,我发起了<HelloGitHub&g ...

  6. Git快速入门进阶篇

    本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...

  7. git快速入门 push/clone/reset/merge/切换分支全都有

    本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...

  8. Git 快速入门--Git 基础

    Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...

  9. Git原理入门简析

    为了获得更好的阅读体验,建议访问原地址:传送门 前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的 ...

  10. Git原理入门解析

    前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的: 一.Git 简介 Git 是当前流行的分布式 ...

随机推荐

  1. All Discs Considered(拓扑排序)

    http://poj.org/problem?id=1778 题意:有两个DVD,第一个DVD上有编号为1~n1的安装包,第二个DVD上有编号为n1+1~n1+n2的安装包,给出m组关系(a,b) 表 ...

  2. web自动化测试—selenium操作游览器属性

    # coding=utf-8'''web游览器属性: 页面最大化 maximize_window() 获取当前页面地址 current_url 代码 page_source title title 后 ...

  3. BigInteger、BigDecimal类的使用详解

    我们都知道在java里边long算是存储长度比较大的了,但是如果有很大的数我们应该怎么处理呢,不用怕,java还为我们准备了一个BigInteger的类,那么这个类到底能存储多大的数呢,这个一时还真不 ...

  4. OpenResty / Nginx模块,Lua库和相关资源的列表

    OpenResty / Nginx模块,Lua库和相关资源的列表 什么是OpenResty OpenResty是一个成熟的网络平台,它集成了标准的Nginx核心,LuaJIT,许多精心编写的Lua库, ...

  5. POJ 1584 计算几何

    思路: 求一遍凸包 用三角形面积(叉积求一下)/边长 求出来高,跟半径比一比 坑点:凸包上三点共线 //By SiriusRen #include <cmath> #include < ...

  6. Android内存管理(11)*常见JVM回收机制「Java进程内存堆分代,JVM分代回收内存,三种垃圾回收器」

    参考: http://www.blogjava.net/rosen/archive/2010/05/21/321575.html 1,Java进程内存堆分代: 典型的JVM根据generation(代 ...

  7. 【转】Linux之printf命令

    转自:http://blog.chinaunix.net/uid-9525959-id-2001528.html printf FORMAT [ARGUMENT]... printf OPTION [ ...

  8. ios cocos2d-x 多点触摸

    需要在 AppController.mm文件中添加一句多点触摸支持: [_view setMultipleTouchEnabled:true];

  9. CF615C Running Track

    思路: kmp + 二分. 实现: #include <iostream> #include <cstdio> #include <algorithm> #incl ...

  10. Android RecyclerView利用Glide加载大量图片into(Target)导致OOM异常

    学过android的人应该都知道Glide是一个无比强大的图片加载库,它内部已经提供了很好的缓存机制供我们选择,我们只需一个参数调用即可(DiskCacheStrategy()),而不必像Univer ...