【声明】

欢迎转载,但请保留文章原始出处→_→

生命壹号:http://www.cnblogs.com/smyhvae/

文章来源:http://www.cnblogs.com/smyhvae/p/3981720.html

联系方式:smyhvae@163.com

【正文】

一、初识Git:

Git是目前世界上最先进的分布式版本控制系统(没有之一)。它的开发者就是大名鼎鼎的Linux操作系统的作者Linus Torvalds。Git被开发出来的初衷是为了更好的管理Linux内核,而现在却广泛应用于各种项目中。Git迅速成为最流行的分布式版本控制系统, 尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby 等等。

那那什么是版本控制系统呢?如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

这个软件用起来就应该像这个样子,能记录每次文件的改动:

版本 用户 说明 日期
1 张三 删除了软件服务条款5 7/12 10:38
2 张三 增加了License人数限制 7/12 18:09
3 李四 财务部门调整了合同金额 7/13 9:51
4 张三 延长了免费升级周期 7/14 15:17

二、在Linux平台安装Git:

首先,可以试着输入git,看看系统有没有安装Git:

$ git

The program 'git' is currently not installed. You can install it by typing:

sudo apt-get install git

如果用Debian或Ubuntu Linux,通过一条命令即可完成安装:

sudo apt-get install git

注:

老一点的Debian或Ubuntu Linux,要把命令改为“sudo apt-get install git-core”,因为以前有个软件也叫GIT(GNU Interactive Tools),结果Git就只能叫git-core了。由于Git名气实在太大,后来就把GNU Interactive Tools改成gnuit,git-core正式改为git。

如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了。

三、在Windows平台安装Git:

Windows下要使用很多Linux/Unix的工具时,需要Cygwin这样的模拟环 境,Git也一样。Cygwin的安装和配置都比较复杂,不建议折腾。不过,有高人已经把模拟环境和Git都打包好了,名叫msysgit,只需要下载一 个单独的exe安装程序,其他什么也不用装,绝对好用。

msysgit是Windows版的Git,下载链接:http://msysgit.github.io/。下载完成后,开始安装。

安装时,弹出如下界面,默认即可:

各参数解释如下:

  • 图标组件(Addition icons) : 选择是否创建快速启动栏图标 或者 是否创建桌面快捷方式;
  • 桌面浏览(Windows Explorer integration) : 浏览源码的方法, 单独的上下文浏览 只使用bash 或者 只用Git GUI工具; 高级的上下文浏览方法 使用git-cheetah plugin插件;
  • 关联配置文件 : 是否关联git配置文件, 该配置文件主要显示文本编辑器的样式;
  • 关联shell脚本文件 : 是否关联Bash命令行执行的脚本文件;
  • 使用TrueType编码 : 在命令行中是否使用TruthType编码, 该编码是微软和苹果公司制定的通用编码

接着,弹出如下界面,默认即可:

上方图片,是设置环境变量 : 选择使用什么样的命令行工具, 一般情况下我们默认使用Git Bash即可, 默认选择。各参数解释如下:

  • Git自带 : 使用Git自带的Git Bash命令行工具;
  • 系统自带CMD : 使用Windows系统的命令行工具;
  • 二者都有 : 上面二者同时配置, 但是注意, 这样会将windows中的find.exe 和 sort.exe工具覆盖, 如果不懂这些尽量不要选择

接着,弹出如下界面,默认即可:

  • 检查出windows格式转换为unix格式 : 将windows格式的换行转为unix格式的换行在进行提交;
  • 检查出原来格式转为unix格式 : 不管什么格式的, 一律转为unix格式的换行在进行提交;
  • 不进行格式转换 : 不进行转换, 检查出什么, 就提交什么

总而言之,按照默认的配置安装即可。安装完成后,在开始菜单里找到“Git”->“Git Bash”,弹出出一个命令行窗口,说明Git安装成功:


二、各种配置:

(1)配置身份:

安装成功后,还需要配置身份(即配置本地用户和邮箱),这是用来上传本地仓库到GitHub中, 在GitHub中显示代码上传者。我们输入如下命令进行配置:

$ git config --global user.name "Your Name"

$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

注:git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

配置完成后可以使用同样的命令来查看是否配置成功,只需要将最后的名字和邮箱地址去掉即可。

(2)设置Git本地项目开发库默认路径:

如果设置了,就不用每次打开Git再cd打开目录了。方法:右键git快捷图标(名叫:Git Bash),找到快捷方式-起始位置,把你的项目地址放在这里就可以了。默认设置如下图:

修改后如下图:

(3)创建版本库:

版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

所以,创建一个版本库非常简单,首先,选择一个合适的地方,新建一个空目录,我新建的目录是:E:\codes\github\smyhvae,我们先跳到这个目录中来:

$ cd /e/codes/github/smyhvae

注:通过pwd命令可显示当前目录。

然后,通过git init命令把这个目录变成Git可以管理的仓库:

$ git init

Initialized empty Git repository in e:/codes/github/smyhvae/.git/

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录(这是一个隐藏文件夹),这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

三、把文件添加到版本库:

【声明】

首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件。

因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

使用Windows的童鞋要特别注意:

千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可:

【步骤】

现在我们在e/codes/github/smyhvae目录下编写一个readme.txt文件,并在里面写一些东西。

进入版本库:

$ cd /e/codes/github/smyhvae

把一个文件放到Git仓库只需要两步。

第一步:用命令git add告诉Git,把文件添加到仓库:

更新本地版本库(.指当前所有目录及文件):

$ git add .

当然,如果你仅仅是添加一个文件,可以这样写:

$ git add readme.txt

更新一个目录这样写:

$ git add src/

第二步,用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "一些说明"

[master (root-commit) a2ebf86] 一些说明

1 file changed, 2 insertions(+)

create mode 100644 readme.txt

git commit命令中,-m后面输入的是本次提交的描述信息,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。

git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。

为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,然后最后一起commit。

关于版本库的常用操作,将在下一个章节中进行讲解。

本文参考链接:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

posted @ 2014-09-19 16:16 生命壹号 阅读(1174) 评论(7) 编辑 收藏

评论列表

#1楼 2014-09-20 00:15 牛腩

支持一下,昨天在使用GIT的忽略文件的时候有个坑,忽略中文文件夹是可以的,不过那个忽略文件得是UTF-8格式的才行

#2楼 2014-09-20 10:02 minttang

等后面的,特别是多个人共用一个项目的冲突解决问题

#3楼[楼主] 2014-09-20 18:40 生命壹号

@牛腩
请问,我每次修改.gitignore忽略文件之后,需要重新把这个文件commit一下吗?

#4楼 2014-09-20 20:02 牛腩

@生命壹号
需要commit,要不然别人下载的时候下载的那个.gitignore文件还是gbk格式的,那样就不能忽略中文文件夹了。

#5楼[楼主] 2014-09-21 20:45 生命壹号

@牛腩
你好,我在做Android开发的时候,明明已经把里面的bin文件夹添加到了忽略文件中,而且也将忽略文件commit提交了,为什么在输入git status命令的时候,还是出现了bin文件夹下的修改信息呢?

#6楼 2014-09-26 12:00 牛腩

@生命壹号
.gitignore 文件里的写法是bin/
估计是你的写法不对吧。。我的一写了就立即有效的。

#7楼[楼主] 2014-09-26 13:16 生命壹号

@牛腩
我是这样写的呀。可否把你的那个Android工程的.gitignore文件发我邮箱哦?我对比一下。我邮箱:smyhvae@613.com,多谢啦
http://www.cnblogs.com/smyhvae/p/3981720.html

最新文章

  1. Sqlserver 语法总结
  2. QuicKHit
  3. CSS解决高度自适应问题
  4. map转json
  5. [INS-32025] 所选安装与指定 Oracle 主目录中已安装的软件冲突
  6. 视频处理控件TVideoGrabber如何重新编码视频/音频(2)
  7. OFBiz之SVN下载地址
  8. siem主流厂商
  9. 线段树(区间修改、区间查询) HDU 1754 I Hate It
  10. 自定义bootstrap样式-9行样式自定义漂亮大气bootstrap导航栏
  11. python实现二分查找算法
  12. sql 的是四个排名函数
  13. Linux远程执行shell命令
  14. java判断是否是数字
  15. MyBatis(国税)
  16. SQLSERVER case when 的学习
  17. Android——实现欢迎界面的自动跳转(转)
  18. BZOJ4557 JLoi2016 侦察守卫 【树形DP】*
  19. UITableView学习之辨析两个方法:⓵dequeueReusableCellWithIdentifier与⓶dequeueReusableCellWithIdentifier:forIndexPath:
  20. hadoop完全分布式文件系统集群搭建

热门文章

  1. echo json数据给ajax后, 需要加上exit,防止往下执行,带上其他数据,到时ajax失败
  2. LeetCode OJ 222. Count Complete Tree Nodes
  3. TeX括号。。。
  4. sublime Text 常用操作
  5. frameset框架样式 加边框
  6. Linux下配置Nginx按天切割日志
  7. libprotobuff8.so not found
  8. replication across two data centers
  9. Git 版本管理基本操作
  10. MyBatis-执行插入语句的时候返回主键ID到传入的参数对象中