您的位置:首页 > 其它

git基本操作

2013-07-15 09:07 176 查看
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代码


git config --global user.name=xxx

git config --global user.email=xxx

mac下 等号替换成空格

做上面那些是设置用户名和email,因为git不允许匿名提交

这个时候git本地已经可以工作了,但是如果要和服务器通信,还有一步要做就是

第二步 远程连接

Generating SSH keys 生成ssh密钥

希望这个时候你已经有了一个github的帐号,因为key是要绑定的,没有就去申请一个吧

密钥应该是在根目录的.ssh下,所以

Java代码


$ cd ~/.ssh

//这个emai替换成你自己的email

$ ssh-keygen -t rsa -C "xxx@gmail.com"

这个时候,应该能看到下面的结果

$ ls

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代码


//把服务器分支好的代码库down到本地

$ git clone https://qbaty@github.com/qbaty/jquery.git
这个时候你就可以在本地修改了,当然你也可以直接在github上修改。然后你改完了某个文件,假如是build.xml这个文件

Linux代码


//让git版本库追踪到build.xml这个文件

$ git add build.xml

//提交到本地版本库 引号里是注释

$ git commit -m "add something"

//这个时候已经提交到本地git版本库了,需要传到github需要推送下

$ 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代码


//选种当前 master 为当前分支

$ git checkout master

//让git追踪到远程的要合并的代码库

$ git remote add xxx git://github.com/xxx/jquery.git

//合并分支

$ git fetch xxx

$ git merge xxx/jquery.js

//推送回给自己的代码库

$ git push origin master

Patch and Apply

每一个pull request都会产生一个patch url,你可以用git am命令来应用修改

Java代码


$ git checkout master

//应用这个分支的改动

$ curl http://github.com/github/jobs/pull/25.patch | git am

$ git push origin master

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

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

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

用户手册

/article/9211206.html

http://my.eoe.cn/curious/archive/3563.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: