git基本操作

来源:互联网 发布:java基础知识总结笔记 编辑:程序博客网 时间:2024/05/01 22:08
Git --- The stupid content tracker, 傻瓜内容跟踪器。那么怎么理解呢?git首先是一个版本控制工具,这点和常用CVS, Subversion是一样的,而不同的是,他采用分布式版本控制库的方式管理。Git的速度非常快,可以很轻易创建分支,并且非常适合用于大项目,它有着非常出色的代码合并追踪能力,再同时它有很多小工具帮它管理版本库。在此本文不试图去深入讨论理解git的工作原理,只打算介绍一下git的相对优点,以及我们可以用git做什么。当今的jquery,淘宝的kissy,白度的Tangram都把自己的代码托管到github上,这里像一个开源基地,谁都可以给任何自己想要参与的项目贡献代码,这个归功于github上提供的两种协作模式(Collaborative Development Models):1、The Fork + Pull Model  (分支推送模式)2、The Shared Repository Model(共享仓库模式)第一种模式在作为陌生人贡献代码上十分有用,后面会详细介绍。 

第一步 环境 
(如果你已经安装好了环境,并且在github上设置好了ssh密钥,你可以跳过这些内容) 
目前git已经都具备了mac linux(不用说) win的安装包 
在开始用git工作前,先得确保机器上已经有git的环境 
win 下的git安装http://help.github.com/win-git-installation/ 
mac 下的git安装http://help.github.com/mac-git-installation/ 
linux 下的git安装http://help.github.com/linux-git-installation/ 

在安装好了git环境之后你需要做些简单的配置 
打开 git 命令行,进到你要放置你代码的目录 
输入 git init //git 初始化 
Linux代码  收藏代码
  1. git config --global user.name=xxx  
  2. git config --global user.email=xxx  

mac下 等号替换成空格 
做上面那些是设置用户名和email,因为git不允许匿名提交 
这个时候git本地已经可以工作了,但是如果要和服务器通信,还有一步要做就是 

第二步 远程连接 
Generating SSH keys 生成ssh密钥 
希望这个时候你已经有了一个github的帐号,因为key是要绑定的,没有就去申请一个吧 
密钥应该是在根目录的.ssh下,所以 
Java代码  收藏代码
  1. $ cd ~/.ssh  
  2. //这个emai替换成你自己的email  
  3. $ ssh-keygen -t rsa -C "xxx@gmail.com"  
  4. 这个时候,应该能看到下面的结果  
  5. $ ls  
  6. config  id_rsa  id_rsa.pub  known_hosts  


然后登录github 
github=》account setting=》ssh public keys=》add public key 
在content里填入rsa.pub的内容,注意别多空格,保存就ok了 
最后通过 
$ ssh git@github.com来测试是否可以通信 
如果你是第一次链接得到的结果如果是 
引用
The authenticity of host 'github.com (207.97.227.239)' can't be established. 
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts. 
ERROR: Hi tekkub! You've successfully authenticated, but GitHub does not provide shell access 
Connection to github.com closed.

则证明你已经联通了github 

第三步 开始工作 简单的双向操作 
现在我们可以开始来说说如何从github上获取代码了,当你在浏览github的时候,你发现你对jquery的代码很有兴趣,然后你又发现了他的一些bug这个时候你想要修改怎么办? 
让我们从第一种模式开始说起吧 
The Fork + Pull Model 分支推送模式 
你可以在浏览代码库的时候发现github右上角右个小按钮fork,这是分支的意思。当你按下之后你会发现,在你自己的主页会产生一个和这个同名的库,这个库就是分支出来的库。 
然后你可以看到,github 给 你分支的库生成了三个地址分别是ssh http 和 read only 
用前两个都有编辑权限,这个时候打开你的terminal 
Linux代码  收藏代码
  1. //把服务器分支好的代码库down到本地  
  2. $ git clone https://qbaty@github.com/qbaty/jquery.git  

这个时候你就可以在本地修改了,当然你也可以直接在github上修改。然后你改完了某个文件,假如是build.xml这个文件 
Linux代码  收藏代码
  1. //让git版本库追踪到build.xml这个文件  
  2. $ git add build.xml  
  3.   
  4. //提交到本地版本库 引号里是注释  
  5. $ git commit -m "add something"  
  6.   
  7. //这个时候已经提交到本地git版本库了,需要传到github需要推送下  
  8. $ git push origin master  

这个环节可能会要你输入你产生ssh密钥时候设置的密码,如果没有设置则为空 
当terminal显示完成的时候,刷新你在github上的代码库,你已经可以发现你的修改已经被更新到服务器了 

回到你的代码库首页,会发现还是右上角有个pull request按钮,如果你想要把你的代码的改动更新到jquery,按下那个按钮会跳转到sent pull request页面,有一个表单,是用来说明你的提交的内容主要功能。填完按下sent pull request,代码库管理者就能收到这个请求,在审核过你的代码后,把这部分合并到主代码上。 

假设你是代码管理者,别人send pull request 给你的时候,你会在你的代码库首页接受到这个请求,然后你决定你要合并别人的改动 
这个时候你需要merge pull request 
通常有两种比较流行的方式: 
Fetch and Merge 
Linux代码  收藏代码
  1. //选种当前 master 为当前分支  
  2. $ git checkout master  
  3.   
  4. //让git追踪到远程的要合并的代码库  
  5. $ git remote add xxx git://github.com/xxx/jquery.git  
  6.   
  7. //合并分支  
  8. $ git fetch xxx  
  9. $ git merge xxx/jquery.js  
  10.   
  11. //推送回给自己的代码库  
  12. $ git push origin master  


Patch and Apply 
每一个pull request都会产生一个patch url,你可以用git am命令来应用修改 
Java代码  收藏代码
  1. $ git checkout master  
  2.   
  3. //应用这个分支的改动  
  4. $ curl http://github.com/github/jobs/pull/25.patch | git am  
  5. $ git push origin master  

这就是一个简单的fork+pull request model下分支以及合并过程。 

关于github的分支冲突合并,了解的还不够深入,目前只知道手动合并。 

而其强大之处就是你可以通过fork quene来查看所有的分支,并且可以随意选择和任意一个分支合并。这一块应该还有很多可以研究的,在此我只是抛砖引玉,如有错漏还请见谅,希望越来越多的人来尝试github,因为开源的力量真的很强大。 

用户手册

http://blog.csdn.net/zzulp/article/details/6238527

http://my.eoe.cn/curious/archive/3563.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 打错的消息想撤回但按了删除怎么办 顺丰快递寄的黄皮和荔枝坏了怎么办 我发快递写错地址备签收不还怎么办 新买的床上四件套用着全身痒怎么办 华为畅玩6x锁屏密码忘了怎么办 我在淘宝上买了货不发货咋怎么办 在快递公司寄的东西丢了我该怎么办 不小心给了快递员子一个差评怎么办 不小心用发霉了的杯子喝了水怎么办 唐三复活了小舞失去的魂环怎么办了 我该怎么办?身陷动漫城输了很多钱 庄家开2球大小球踢成2球怎么办 去哪儿网订机票时邮箱写错了怎么办 在南航航班上把手机丢飞机上怎么办 买了品牌鞋穿了一周就破了怎么办 狗让狠狠的打了一顿不理人了怎么办 调好米粉宝宝吃的时候就凉了怎么办 情人间闹分手删了微信后悔了怎么办 8个月宝宝不坐椅子一直要抱怎么办 2个月婴儿3天没有拉大便了怎么办 8个月的宝宝不吃米糊和稀饭怎么办 2岁零5个月的宝宝不说话怎么办 两岁宝宝不拔掉老是拉在裤上怎么办 一岁的宝宝吞了一颗五子棋该怎么办 别人欠我钱还把我拉黑我该怎么办 欠我钱的人耍赖不还我该怎么办 交易猫买的炉石传说号被找回怎么办 淘宝上卖水果过季了不想下架怎么办 两岁宝宝被蚊子咬了挠破流水怎么办 我打了人一拳他就躺地下了怎么办 在微信上被认识的人骗了钱该怎么办 微信上面被不认识的人骗了钱怎么办 柜体和订做的柜门颜色对不上怎么办 拉鞭炮的车压了我的电车不陪怎么办 脚爱出汗穿高跟凉鞋总往前滑怎么办 视频的格式是VⅠD打开很慢怎么办 汕头普法学法我点了考试没考怎么办 德云的生活攻略第三天卡关了怎么办 我的世界房子被参观的人烧了怎么办 新买的手表返厂维修弄划伤了怎么办 糖猫手表丢了别人捡了换了卡怎么办