对Github挺感兴趣,一直想尝试一下,以前都是直接在github网站上下载.zip文件,并未使用他真正厉害之处,现在有时间了就折腾一下,体验下本地和远程的同步过程,顺便了解一下github的版本控制原理。So,把昨晚折腾的东东,整理下写成文档,方便以后查看。
第一步 环境
(如果你已经安装好了环境,并且在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 初始化
做上面那些是设置用户名和email,因为git不允许匿名提交
这个时候git本地已经可以工作了,但是如果要和服务器通信,还有一步要做就是跟github进行连接
第二步 远程连接
Generating SSH keys 生成ssh密钥
希望这个时候你已经有了一个github的帐号,因为key是要绑定的,没有就去申请一个吧
密钥应该是在根目录的.ssh下:
ssh-keygen -t rsa -C "xxxxxxxxx"
产生id_rsa.pub文件:
产生的秘钥文件id_rsa.pub中的内容:
登录github
复制id_rsa.pub中的内容,不加空格的黏贴到Key文本框中:
github=》account setting=》ssh publickeys=》add public key
在content里填入rsa.pub的内容,注意别加空格,复制进去保存就ok~
通过 ssh [email protected] 测试是否可以通信
如果显示如下:
则表明已经跟github连接上了~
第三步 开始工作 简单的双向操作
The Fork + Pull Model 分支推送模式
这里尝试了分支推送模式,还有另一种模式未尝试,详细的可以参考下面的链接~
比如如下这位大牛的github网站晒出了很不错的工程和文件,你想clone下来研究下(PS:这就是开源的力量,大赞~)
进到他的工程里面,你可以在浏览代码库的时候发现github右上角右个小按钮fork,这是分支的意思:
当你按下之后你会发现,在你自己的主页会产生一个和这个同名的库,这个库就是分支出来的库:
然后你可以看到,github 给你分支的库生成了两个地址分别是ssh, http
这个时候打开你的github bash
如果你想clone你感兴趣的工程文件可以用如下命令:
git clone [email protected]:ClarkWang12/svinet.git
clone到本地工作目录后的工程文件夹:
github上也可以在线生成文件,假如创建一个helloworld.cpp的文件
内容如下:
将github上的文件pull到本地版本库中,前后达到一致:git pull
(PS:这一步在每次提交push之前也最好做一下,不然有可能产生冲突)
pull时需要输入产生ssh秘钥时产生的密码
更新完成后,如果本地进行了修改的话,需要提交时:
先追踪到修改的文件,我这里是helloworld.cpp,
git add helloworld.cpp
然后,提交到本地版本库中
git commit -m "testing github ..."
ps: 引号中是注释
提交完毕后,可以推送到github上去了:
git push origin master
当terminal显示完成的时候,刷新github网页,修改已经被更新到服务器了。
github上提交后的文件:
PS:push报错解决方法
push的时候产生如下报错信息的原因是因为版本发生冲突,只需要git pull一下,先把github上的版本更新下来,再讲本地修改后的文件push上去:
参考:http://qbaty.iteye.com/blog/865368