认识GIT之入门

前言

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

作者:WadeYu
出处:http://www.cnblogs.com/wadeyu/
本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/wadeyu/p/4764386.html