前言

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. php phppowerpoint

    今天早上从订阅的 Zend DevZone 看到篇很有意思的文章. Creating PowerPoint 2007 files using PHP. 试了一下. 果然很又意思, 分享给大家吧. 程序 ...

  2. 9.2NOIP模拟题

    9.2 NOIP模拟 题目名称 “与” 小象涂色 行动!行动! 输入文件 and.in elephant.in move.in 输出文件 and.out elephant.in move.in 时间限 ...

  3. Android Studio 常用快捷键(超实用!!!)

    快捷键又称为“热键”,多个按键的组合可以实现某些快速操作,例如Window中最常用的Ctrl+C和Ctrl+V,熟练使用快捷键可以大大提高开发效率并可以减少某些错误的发生.Android Studio ...

  4. knockjs

    用VS2012建立Web站点有个新惊喜,默认加了KnockoutJS这个Javascript的MVVM模式的实现库,方便Web前端的开发 官方站点 √主页:  http://www.knockoutj ...

  5. MFC学习篇(二):error LNK2005 及其解决方法

    环境:MFC条件下添加原有代码 >nafxcwd.lib(afxmem.obj) : error LNK2005: @YAPAXI@Z) already defined in LIBCMTD.l ...

  6. python值函数名的使用以及闭包,迭代器

    一.函数名的运用 函数名就是一个变量名,但它是一个特殊的变量名,是一个后面加括号可以执行函数的变量名. def func(): print("我是一个小小的函数") a = fun ...

  7. 【年终糖果计划】跟风领一波糖果 candy.one 领取教程

    糖果领取网址(较为稳定):https://candy.one/i/1474564 用微信和QQ打开的朋友请复制到其他浏览器打开 糖果领取网址(较为稳定):https://candy.one/i/147 ...

  8. 新浪云虚拟机ftp链接显示失败问题

    新浪云虚拟机ftp链接显示失败问题 测试是在局域网遇到的 域名解析可以ping有字节回复 账号密码也没有错误,但是链接一直出现    连接失败   拒接连接等问题 解决办法: 其实是局域网内的问题,这 ...

  9. jQuery——事件操作

    事件绑定 1.简单事件绑定 $("button").click(function () {})//可重复绑定,不会被层叠 2.bind():不推荐使用 $("button ...

  10. 06--Qt窗口布局

    Qt窗口布局 标签: qtlayout 2012-05-05 07:56 3076人阅读 评论(0) 收藏 举报  分类: Qt开发(33)  版权声明:本文为博主原创文章,未经博主允许不得转载. 布 ...