Git 使用教程与基本原理


目录视图 摘要视图 订阅 分类: 工具使用 有奖征资源,博文分享有内涵 5月推荐博文汇总 大数据读书汇--获奖名单公布  GIT使用教程与基本原理 2013-05-28 15:51 2236人阅读 评论(0) 收藏 举报 这个教程之前是发在社区网站上,现在把它转到自己博客上:) http://oss.lzu.edu.cn/artical.php?id=16 说明:该教程全部图片都来自于《pro git》。以下所有的操作,除非特别声明,都是基于Linux终端来进行的。如 果你发现这篇文章有错误,或者其他问题,欢迎与我联系:wengpingbo@gmail.com 1、什么是GIT Git是一个强调速度的分布式版本控制软件和源代码管理系统(SCM,source code management)。Git最初是由 Linus Torvalds为内核开发而设计的管理软件。自从Git推出以来,已经被很多开源项目所采纳。每一个Git工作目录 是一个带有完全历史记录和版本信息的仓库,不依赖于网络和中央服务器。Git是一个免费的开源软件,遵从 GNU v2协议。 Git这个词在英语中的原意是很笨拙,没用的人。Linus自嘲说:“我是一个任性的笨蛋,所以我把我的所有的项目 的名字都和我很相似。第一个是Linux,现在是Git。”Git的帮助文档中描述Git为:笨拙的内容跟踪者 (the stupid content tracker)。(翻译自WIKI) 关于开发Git的一些历史由来,可以看看这个网站:https://lkml.org/lkml/2005/4/6/121 2、为什么要用GIT 更顺畅的工作流程,开发过程中,完全可以离线操作 快速,Git分布式架构使得本地仓库包含所有的历史版本信息,你可以在不同的版本之间快速切换 弹性的本地分支,在svn下,你建一个分支需要把源代码复制到另外一个文件夹,而在Git下,创建分支的代 价是非常小的,只需一条命令 仓库目录结构简洁,用Git复制一个项目,只会在项目根目录创建一个.git的目录,而其他目录很干净 内容按元数据方式存储,所有的版本信息都位于.git目录下 完整性好,更易于协作开发 用户群大,现在已经有成千上万个开源项目采用Git来做项目管理,github上更是有无数个代码仓库 3、GIT安装与配置 a) 安装 1.从源码安装 在安装之前,你必须保证以下几个依赖包已经安装在你的系统上:curl, zlib, openssl, expat, libiconv。如果你的系统 是Ubuntu,你可以这样安装: apt-get install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 当所有的依赖项已经解决,就可以从http://git-scm.com/download上下载Git的源码,然后编译安装,具体命令如 下: tar -zxf git-1.*.*.*.tar.gz cd git-1.*.* make prefix=/usr/local all sudo make prefix=/usr/local install 2.在Linux上安装 如果你的系统是Linux或者Fedora,你可以通过以下命令直接安装Git: yum install git-core (fedora) 原创: 14篇 转载: 0篇 译文: 0篇 评论: 2条 (2828) 个人资料 wengpingbo 访问: 18023次 积分: 301分 排名: 千里之外 self intro C/C++/Java/lua/php/perl/shell Lanzhou University https://github.com/wengpingbo 文章搜索 文章分类 服务器&系统使用 (5) WEB开发 (0) C/C++ (2) 书 (1) Security (2) stm32/fpga (2) windows开发 (1) linux开发 (0) 工具使用 (1) Network (0) 文章存档 2013年06月 (2) 2013年05月 (8) 2012年01月 (1) 2011年10月 (1) 2011年07月 (2) 阅读排行 <魔塔50层>android反编译 GIT使用教程与基本原理 record what i has done, and what i am thinking 登录 | 注册 更多相关资源: github git GIT使用教程与基本原理 - shadow the world - 博客频道 - CS... http://blog.csdn.net/wengpingbo/article/details/8985132 第1页 共6页 2014/6/9 10:55 3.在Windows上安装 尽管Git是发源于Linux,但现在Windows上也有能够正常使用Git,只不过不支持中文,在Windows下所有的中文都 显示问号,另外还有一些功能上的BUG。所以建议还是在Linux上去使用Git,如果你不得不工作在Windows上,你 可以到http://msysgit.github.com/上下载msysgit的最新版,安装过程和其他Windows程序差不多,基本上点下一步 就OK了。Msysgit默认会安装git bash和git GUI这两个程序,一般用git bash就可以了,它支持常用的命令。如果对 Linux命令行不熟,你也可以用用git GUI,但功能有限制。 b) 第一次使用GIT 在你安装好Git之后,你需要修改一些配置,才能正常使用Git。 Git通过“git config”命令来配置Git,这个命令有2个选项:--system, --global, 加上默认选项,分别对应Git上3级配 置文件。第一个是/etc/gitconfig文件,和--system对应,这是全局配置文件,修改这个文件,将会影响系统上所有 的用户,所有的仓库。第二个是你家目录下的/.gitconfig文件,与--global对应,修改它会对你当前用户的所有仓库 产生影响。第三个是你仓库中的.git/.gitconfig文件,这是“git config”默认修改的配置文件,它只会对你当前仓库 产生影响。 在第一次使用Git时,你需要告诉你的协同开发者,你是谁以及你的邮箱,在你提交的时候,Git需要这两个信息。 具体通过以下命令设置: git config --global user.name “Test OSS” git config --global user.email oss.lzu.edu.cn@gmail.com 当然你也可以不用--global选项,但这意味这你在每一个仓库中都要这样设置。 同时,你也可以指定你的编辑器,你的Diff工具: git config --global core.editor vim git config --global merge.tool vimdiff 你还可以通过”git config --list”命令来查看你的设置。 当你把Git设置好之后,如果你要和从Git服务器上获得仓库,或者向Git服务器提交你的代码(比如github),你可 能需要生成你自己的ssh密钥对。Git支持4种与服务器端通信的协议:git、http、ssh和https。其中git只是一个只读 协议,也就是说你只可以从服务器端获取仓库,但是你不能提交你自己的代码。而http和https用的很少,大部分都 只支持ssh协议和Git协议。 当你通过ssh协议与远端服务器进行通信的时候,你可以通过以下命令生成ssh密钥对: ssh-keygen -t rsa 如果你没有指定密钥名称和存放路径的话,它默认把两个不对称密钥放在你的家目录下的.ssh目录下,密钥文件默 认名称为id_rsa和id_rsa.pub,前者是私钥,后者是公钥。中间可能会要你设定访问密钥密码,这个可以设,可以 不设,但为了安全考虑,还是建议你设一个访问密码。否则,意味着任何持有你密钥的人都可以使用该密钥。 然后把你的公钥发给Git仓库管理员,然后你就可以通过ssh协议来访问服务器端,期间程序会自动进行密钥对匹 配,如果你设了访问密码,你可能需要输入密码。 更多关于ssh的内容,请访问这里:http://www.freebsd.org/doc/zh_CN/books/handbook/openssh.html 这些设定完之后,你可以通过获得任何一个公开的代码仓库来检测你的git是否工作正常。比如下面这个: git clone git://git2.kernel.org/pub/scm/git/git.git 4、GIT仓库 Git做为一个资源管理和跟踪系统,如果想要把自己的文件托管在Git上,那么首先你得让Git知道你需要管理的文 件在哪。比如说现在我有一个项目,它在test文件夹里,我想让Git管理这个项目,这个时候你需进入到这个目 录,然后运行“git init”命令。这个时候Git就会在该目录下生成一个.git的隐藏目录,Git用来进行版本控制和内容 跟踪的所有文件都在该文件夹下。 处于git跟踪下的文件只具有三种状态: Modified(working directory):被修改过的文件 Staged(staging area):通过git add添加到暂存区域的文件 Committed(git directory):通过git commit提交到仓库的文件 所以,一般的git工作流程可能是这样:修改过某些文件,然后把这些文件添加都暂缓区,再提交到仓库中形成一 个版本或快照,最后提交到git服务器上。而在中间,可能伴随着分支管理,分支切换,撤消与合并。 可能有些人会觉得很奇怪,为什么git会有暂存区域这个概念,直接提交到仓库中不就 本控制用的,试想如果没有暂存区域,每修改一个文件,就会形成一个版本,太过频繁,不易于管理。暂存区域 其实就是下一个版本的文件清单,你可以自由控制该往仓库中提交什么文件,这也可以避免在一个版本中包含一 些中间文件,比如编译后的文件。 (1085) (936) (781) (505) (363) (306) (263) (148) 常见P2P协议之BitTorren 在linux下利用Google的S 新服务器配置日记 md5算法实现 SATA接口笔记本安装Win ubuntu修改swap 读《操作系统之哲学原理 C++日记 最新评论 <魔塔50层>android反编译破解 wengpingbo: @u012891543:对 不起,无法验证你是该app的作 者。况且,这只是个人私下自娱 自乐之作,并没有... <魔塔50层>android反编译破解 u012891543: 如果算历史的话魔 塔50层是日本的一个家伙做的, 我移植成手机版,你没什么资格 说我,鄙视你们这种破解别人... 更多相关资源: github git GIT使用教程与基本原理 - shadow the world - 博客频道 - CS... http://blog.csdn.net/wengpingbo/article/details/8985132 第2页 共6页 2014/6/9 10:55 5、GIT基本流程 1.初始化仓库 初始化仓库有两种情况,一种是直接在一个空目录里建立一个项目,这时候你可以这样干: git init 另一种是从其他机器复制一个仓库,比如这样: git clone git://git2.kernel.org/pub/scm/git/git.git (远程仓库) git clone https://github.com/jquery/jquery.git (远程仓库) git clone git@github.com:wengpingbo/MicroBlog.git (远程仓库) git clone /home/oss/test.git (本地仓库) 第一次从服务器上复制一个仓库,可能比较慢,因为git要把所有的历史记录和版本全部复制下来,这也算 个弊端吧! 更多相关资源: github git GIT使用教程与基本原理 - shadow the world - 博客频道 - CS... http://blog.csdn.net/wengpingbo/article/details/8985132 第3页 共6页 2014/6/9 10:55 令后加一个目录就ok了。比如我想把test仓库放到oss仓库中:git clone /home/oss/test.git oss 之后,你就可以开始你的工作啦! 2.添加文件 在编辑了几个文档之后,你可能突然想起来,好像文件还没有让git跟踪。Git并不会实时的跟踪你的文件,只在你 明确让它记录你的文件时,它才会把指定的文件的当前状态记录到仓库中去,然后又撒手不管了。我想这就是说 git笨的原因吧。这个时候,你需要手动添加你的文件当暂存区域: git add filename1 filename2 如果你懒得一个一个加,你可以试试这个: git add -A 它会把当前目录下所有的文件都添加到暂存区域。 3.添加一个版本 在添加完文件后,你可能觉得应该创建一个commit了。 git commit 怎么样?是不是有点不对劲,好像这个命令并没有按你想象的那样跳出一个提交成功的提示,而是直接跑到了你 在配置中指定的编辑器中了。仔细看一下,原来是让你给这个版本做一些备注,随便写点什么,然后保存退出就 ok了。如果你不想这么麻烦,可以这么干: git commit -m ‘initial version’ 可能你觉得之前讲的太罗嗦了,提交一个commit还这么麻烦,其实有一个捷径可以使你跳过添加文件这个过程: git commit -a -m ‘initial version’ 大功告成,这个命令会把之前所有的已经添加的文件都加入到这个版本中。 可能你又有疑问了,之前添加的文件不是自动会加入到下一个版本中吗,问什么还加这个-a参数? 其实git add命令只是把指定文件的当前状态添加到暂存区域,并不代表一个文件一旦添加,就会一直存在每个版 本中。如果你添加一个文件后对这个又进行了修改,在你commit时候,只会commit这个文件添加时的状态,不会 把之后的修改也commit进去,除非你再次添加。 4.推送变更 在你commit完之后,你可能想把自己的代码提交到github或者其他git服务器上,与他人交流共享,这时候就需要 和远程服务器打交道了。 如果你是在本地建立起的仓库,默认情况下是没有任何服务器地址的,如果你是从其他服务器复制过来的仓库, 这个服务器地址会自动添加到你的仓库中,你可以这样查看: git remote -v 如果只输入”git remote”,就只会列出服务器端的别名,不会列出地址来。 一个仓库可以有多个服务器地址,这就意味着,你可以从不同的人手中复制同一个仓库,但这并不会打乱你自己 的分支,哪怕双方的分支名字都一样。假如你现在在和另外两个人做同一个项目中的同一个分支,你发现A的一 个模块正是你想要的,你想把他的代码合并到你现在的版本中,这时候你可以这样做: git remote add code_a git://url/test.git //添加对方的地址,code_a是别名 git fetch code_a //复制对方的仓库到本地,但不合并,git pull会自动合并 git merge code_a/master //把对方master分支合并到自己当前版本下 合并完之后,你可能想提交你的代码到其他的服务器上,这时候你可以先把要提交的服务器地址添加进来,然后 这样做: git push origin master 上面的命令就是把自己master的分支提交到名字为origin的服务器上 5.创建并管理分支 在做项目的时候,你可能会想写一些扩展性的功能,或者做一些小实验,但是你又不想影响你现在的项目。这时 候,你可以创建一个分支,然后在这个分支里写东西,当觉得不好的时候,你可以把这个分支删除掉,对你之前 的主分支没有任何影响。或者你觉得这个新特性超出了自己的预想,可以合并到主分支里,这时候你只要把工作 转回主分支,然后合并分支,最后删除分支,然后就跟那个分支没创建一样。具体操作如下: git branch test //创建一个test分支 git checkout test //转到test分支 edit something...commit something... git checkout master //转到master分支 git merge test //合并test分支 git checkout -b test2 //创建test2分支,并转到test2分支 git branch -d test //删除test分支 git branch //列出分支列表 更多相关资源: github git GIT使用教程与基本原理 - shadow the world - 博客频道 - CS... http://blog.csdn.net/wengpingbo/article/details/8985132 第4页 共6页 2014/6/9 10:55 更多 1 上一篇 linux文件权限与目录权限的差异 下一篇 常见P2P协议之BitTorrent 分析 顶 0 踩 0 主题推荐 版本控制 开源项目 开源软件 项目管理 猜你在找 见过最好的git入门教程 Git学习笔记(二) Git初始化 CentOS6.4安装samba后windows不能访问 工作流系列之基础概念篇 Git merge的实质是把两个版本合在一起,然后在当前分支创建一个新的commit,如果你在两个分支的同一个文件 的同一个地方都做了修改,这时候merge就会失败,git就不会自动创建一个新的commit,而是直接停住。你需要 手动修改这些冲突的文件,选择这两个分支中的一个版本,或者自己重写这个部分,然后手动添加这些文件到暂 存区域,再commit一下就ok了。要查看哪些文件冲突了,可以用”git status”查看。 6.撤消改动 是人就会犯错。当你执行某个命令之后,突然发现,自己写错了,或者漏了一个文件,这时候怎么办? 如果你提交得太早,忘了添加某些文件,你可以这样做: git commit -m ‘add something ’ git add file1 git commit --amend 最后一个命令会把你当前暂存区域最为上一次的commit。如果你commit以后,马上amend,这时候git会直接跳到 编辑commit备注里面,这样你可以修改你上次commit的备注。 如果你添加了不该添加的文件,你可以这样挽回: git add . //把所有的文件都添加进去 git reset HEAD readme //把readme文件从暂存区域去除 如果你发现你编辑错了一个文件,你想把它恢复到上一个版本的状态,这时候你可以这样: git checkout -- filename1 //只撤消这一个文件 如果你觉得这个版本糟糕透了,想完全回滚到上一个版本,你可以干如下事情: git reset --hard HEAD^ HEAD是指向当前版本,^指当前版本的父版本,这个操作无法撤消。你可以把--hard换成--soft,这只会回退 commit信息。还有一个--mixed默认选项,大家可以参考官方文档,查看这3个选项的具体区别。 6、GIT常用命令 Git add Git clone Git commit Git push Git checkout Git reset Git pull Git status Git branch //advanced Git tag Git log Git merge 7、学习GIT相关资料 《pro git》 :http://git-scm.com/book/zh 《git magic》 :http://www.csc.kth.se/utbildning/kth/kurser/DD2385/material/gitmagic.pdf Git manual :http://git-scm.com/docs 更多相关资源: github git GIT使用教程与基本原理 - shadow the world - 博客频道 - CS... http://blog.csdn.net/wengpingbo/article/details/8985132 第5页 共6页 2014/6/9 10:55 C++语言基础(笔记全文) ListAdapter 详解 Android_数据存储——SharedPreferences Nagios监控mysql从库报错: libmysqlclient.so.18: Java callback JAVA实现回调 查看评论 暂无评论 您还没有登录,请[登录]或[注册] * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场 核心技术类目 全部主题 Java VPN Android iOS ERP IE10 Eclipse CRM JavaScript Ubuntu NFC WAP jQuery 数据库 BI HTML5 Spring Apache Hadoop .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP Spark HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap 公司简介 | 招贤纳士 | 广告服务 | 银行汇款帐号 | 联系方式 | 版权声明 | 法律顾问 | 问题报告 | 合作伙伴 | 论坛反馈 网站客服 杂志客服 微博客服 webmaster@csdn.net 400-600-2320 京 ICP 证 070598 号 北京创新乐知信息技术有限公司 版权所有 江苏乐知网络技术有限公司 提供商务支持 Copyright © 1999-2014, CSDN.NET, All Rights Reserved 更多相关资源: github git GIT使用教程与基本原理 - shadow the world - 博客频道 - CS... http://blog.csdn.net/wengpingbo/article/details/8985132 第6页 共6页 2014/6/9 10:55
还剩5页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

wybopen

贡献于2014-10-16

下载需要 3 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf