认识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
认识GIT之入门的更多相关文章
- GIT 从入门到放弃大整理
跟着廖雪峰学 GIT http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GUI f ...
- 第三章 Git的入门 - 读书笔记
Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
- Android系统移植与驱动开发--第三章 Git使用入门及在学习中有感
第三章 Git使用入门 使用Git的目的是减少各种版本的Linux的压缩大小,提供源代码在Linux上进行编译. 在这一个章节中,其实就是关键步骤的操作,虽然Git与我们学习的android没有很大的 ...
- 让 Python 带你进入开源的世界——Git 从入门到与他人协作开发
让 Python 带你进入开源的世界--Git 从入门到与他人协作开发 我认为开源社区中有很多优秀的资源,并且可以帮助进阶中的程序员提高编程能力和水平.所以,我发起了<HelloGitHub&g ...
- Git快速入门进阶篇
本文接着Git快速入门篇,继续探讨Git在管理项目中的一些应用. 远程仓库的使用 查看远程仓库 查看你已经配置的远程仓库服务器,可以运行 git remote 命令.指定选项 -v,会显示需要读写远程 ...
- git快速入门 push/clone/reset/merge/切换分支全都有
本文介绍git快速入门,从安装/创建init / 发布push/版本回退reset / branch分支切换/合并分支merge 这些基本的操作都有涉及,方便新人快速入手,有需要的朋友mark一下.首 ...
- Git 快速入门--Git 基础
Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...
- Git原理入门简析
为了获得更好的阅读体验,建议访问原地址:传送门 前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的 ...
- Git原理入门解析
前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的: 一.Git 简介 Git 是当前流行的分布式 ...
随机推荐
- Oracle group by分组拼接字符串
select wm_concat(id),depon from test_1 group by depon
- 【洛谷4770/UOJ395】[NOI2018]你的名字(后缀数组_线段树合并)
题目: 洛谷4770 UOJ395 分析: 一个很好的SAM应用题-- 一句话题意:给定一个字符串\(S\).每次询问给定字符串\(T\)和两个整数\(l\).\(r\),求\(T\)有多少个本质不同 ...
- 【CodeForces727E/CF727E】Games on a CD (字符串哈希)
题目: CodeForces727E 分析: 看到字符串比较,肯定想到哈希啊--现学的哈希,先丢两个重要的公式 (\(seed\)是大于字符集大小的质数,\(p\)是大质数) \[hash[i]=(h ...
- 【NOIP练习赛】开车
[NOIP练习赛]T2.开车 Description 老司机小 Q 要在一个十字路口指挥车队开车,这个十字路口可 以描述为一个 n*n 的矩阵,其中第 2 行到第 n-1 行都各有一道横向车 道,第 ...
- ansible基础知识(二)
软件相关模块 yum yum和rpm的区别 rpm: (Redhat package manager)RPM管理支持事务机制.增强了程序安装卸载的管理. yum: YUM被称为 Yellow dog ...
- Sqoop架构(四)
Sqoop 架构是非常简单的,它主要由三个部分组成:Sqoop client.HDFS/HBase/Hive.Database. 下面是Sqoop 的架构图 (1)用户向 Sqoop 发起一个命令之后 ...
- J2EE集群原理(摘录)
J2EE集群原理 什么是集群呢?总的来说,集群包括两个概念:“负载均衡”(load balancing)和“失效备援”(failover) 图一:负载均衡 多个客户端同时发出请求,位于前端的负载均衡 ...
- [Windows Server 2008] 服务器安全加固
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:服务器安全加固 ...
- JAVA和JVM运行原理揭秘
这里和大家简单分享一下JAVA和JVM运行的原理,Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器 ...
- R语言数据重塑
使用cbind()函数连接多个向量来创建数据帧.此外,使用rbind()函数合并两个数据帧 使用merge()函数合并两个数据帧.数据帧必须具有相同的列名称,在其上进行合并 melt()拆分数 ...