首页 > 挨踢(IT), 职场生涯 > Git&Github社区化协作使用指南

Git&Github社区化协作使用指南

2013年8月28日 发表评论 阅读评论 3,913 人阅读    

礼多人不怪

第一次录制视频,质量欠佳,尤其是字体太小,看不清楚,让各位朋友失望了。万分抱歉!下面我把视频所涉及的指令做一个详细说明,略表歉意!

为了和视频统一起来,D瓜哥还是按照视频所讲内容顺序来写这篇文章。

Git客户端的下载与安装

Git就是一个版本控制系统,学会使用Git的命令行,就可以在任何支持Git的托管服务器以及个人项目中使用。所以,这篇文章侧重讲解Git的命令。

只有托管服务器,没有客户端也不行啊。在Windows下,比较知名的客户端是msysgit。下载地址,猛搓这里

下载完成后安装,看着说明,一路“Next”就OK。安装完成之后,桌面上会有一个“Git Bash”的快捷方式,双击打开,我们一下的操作,将主要在这里完成。

最近听说SmartGit很好很强大,D瓜哥今天试玩了一下,确实不错,很棒的图形用户界面的工具。感兴趣的,可以自己玩玩。

视频: Git&Github使用简介

Git的配置

古人云:“工欲善其事,必先利其器。”安装完成之后,我们需要做一些配置,才能使用得得心应手。

基本信息配置

  • 配置用户名

    git config --global user.name <用户名> 
    

    用于Git的用户名。请注意,这个用户名只是作为一个标识,不用于进行服务器登录等。

  • 配置邮箱

    git config --global user.email <邮箱>
    

    配置个人的电子邮箱。另外,也仅仅是一个标识,不用于登录服务器等;

基本信息就只需要配置这两项常用的。还可以配置默认编辑器等。这个在“中文乱码”中会讲解到,不再赘述。

SSH-Key配置

目前,可以和Github通信的主要方式以及特性有如下几种:

  • SSH–这个是最安全的协议,我们也将采用这种这方式;
  • HTTPS–该协议可以顺利“穿越长城,走向世界”。所以,如果“SSH”方式不行,可以试试这种方式;

使用SSH协议的话,我们需要配置SSH Key,其实就相当于一对密码。下面,我们开始倒腾。

  • 测试通信状态

    ssh -T git@github.com
    

    使用该命令测试一下与Github通信是否顺畅。如果测试其他Git托管服务器,只需要把后面的网址换成相应的网址就可以了。

如果显示出了你在Githu上的用户名,则表示已经配置过了,不需要再生成SSH Key了。

  • 生成SSH Key

    ssh-keygen
    

    使用该命令,一路Enter下去,就会在C:\Users\Administrator\.ssh目录下,生成一对SSH key。

  • 将公钥添加到Github上
    打开C:\Users\Administrator\.ssh目录,使用Notepad++等现代文本编辑器(记事本就算了,而且还可能遇到问题)打开id_rsa.pub文件,将里面的内容全部拷贝下来,然后打开Github,打开个人设置页面,选中“SSH Key”选项,点击“Add SSH Key”按钮,然后在新新出现的表单中,填入标题,再将刚刚复制下来的内容,粘贴到“Key”栏,然后点击“Add Key”按钮,完成添加。

  • 确认成功

    ssh -T git@github.com
    

    再次执行该命令,如果反馈信息中有你的用户名,并且英文提示,授权成功,则表示配置成功。

中文乱码配置

中文乱码问题请参考我以前写的一篇文章,“彻底解决Git中文乱码问题 ”,这里就不再详述了。有问题请留言。

单兵作战

作为一个码农,或者说挨踢从业者,我们手头上估计会有好多代码、脚本等,托管到Github等代码托管到服务器上是一个非常好的选择。那么,我们该怎么办呢?

因为本文是为了方便参与“MySQL手册翻译”活动的朋友使用的,为了减少大家的不便,以下内容尽可能使用和该项目相关的URL等。

  • 从服务器上获取已经建立的项目

    git clone git@github.com:diguage/manual56.git  #注释:这是D瓜哥的分支,请换成自己的分支。
    

    这条命令就会将我们在Github的项目克隆到本地。需要说明的是,项目会自动以项目名称建立文件夹,如果需要自定义文件夹名称,只需要在URL后面加上文件夹名即可。

    如果对某项项目感兴趣,想研究研究,甚至参与进来,就要首先建立自己的分支:建立自己的分支也很简单,打开Github网站,进入项目的主页面,点击右上角的Fork按钮即可建立自己的分支,并且会自动跳转到自己的分支页面。

  • 向版本库中添加文件

    git add <文件名>  #注释:可以在后面添加多个文件,只需要用空格隔开即可。
    

    这条命令会将指定的文件添加到版本控制下。 添加之前,需要将这个文件拷贝的版本库所在的目录下。如果需要添加多个,可以使用参数-A,这样就不需要添加文件名,会自动将目录下所有文件添加到版本控制下。另外,如果不加入版本控制,则无法保存修改记录,也无法上传到Github上。

  • 提交修改

    git commit <文件名>  #注释: 可以在后面添加多个文件,使用空格分割。
    

    该命令会将文件修改记录提交到服务器上。如果需要添加多个,可以使用参数-a,这样就不需要添加文件名,会自动将目录下修改过的文件添加到版本控制下。

    但是由于Git是分布式的版本控制系统,这个提交只是提交到本地服务器了,如果需要上推到Github上,还需要使用如下命令:

  • 上推到Github上

    git push origin master
    

    这条命令会将所有提交的修改记录上推到Github上。 这里,origin代表项目的原始网址,就是上面git clone后面的网址。

如果是一个人玩的项目,这几条指令基本上可以满足我们的需求了。但是,“MySQL手册翻译”是一个社区化协作、多人参与的大型项目。这几条指令还远远不够。

百团大战

无论是有意寻来还是无意路过,也行都参与到了社区化协作。进行社区化协作,除了上面的指令外,我们还需要一起其他的命令。

  • 建立自己的分支

    建立自己的分支也很简单,打开Github网站,进入项目的主页面,点击右上角的Fork按钮即可建立自己的分支。然后,按照本文上面“单兵作战”描述的搞就可以了。

  • 添加主库URL

    git remote add mysql2cn git@github.com:mysql2cn/manual56.git
    

    先将自己的分支克隆岛本地。然后,通过这个命令,将主库的URL添加到本地的版本库里。然后就可以进行下面的命令

  • 获取主库的修改

    git fetch mysql2cn  #注释:这里的<code>mysql2cn</code>要和上面的名字保持一致
    

    社区化协作的时候,有好多人同时提交Pull Request到主库。我们可以使用该命令将主库的修改同步到本地。

  • 合并主库代码到自己的分支上

    git merge mysql2cn/master master  #注释:将主库的主分支合并的到自己分支的主分支上。
    

合并过程难免会遇到冲突,这个需要手动解决冲突。命令:

git pull mysql2cn master

等同于上面的两条命令。但是,D瓜哥还是习惯分开来写。另外,我们也可以使用这条命令同步自己分支到本地。具体如下:

git pull origin master

  • 上推到Github上

    git push origin master
    

    这条命令会将所有提交的修改记录上推到Github上。

  • 向主库申请合并
    社区化协作项目,不能自己玩,还需要将你做的修改提交到主库。这时候命令行已经力所不能及了。需要到网页上,打开自己分支的页面,在代码显示区域的右上角有一个“Pull Request”,然后根据提示一步一步走下去就可以了。如果不明白,请看视频。

看我七十二变

分支管理,大家请看阮一峰老师的文章"Git分支管理策略"。内容讲解的非常细致到位。D瓜哥就不献丑了。

锦上添花

上面介绍的这些命令基本上可以满足我们一般的需求了。但是,我们追求的是“更快,更高,更强”。所以,有必要再了解一些指令。

  • 查看版本库状态–务必掌握,经常使用

    git status
    

    该指令用于查看版本库目前的状态;返回的第一行表示在哪个分支上,还会显示没有提交的文件列表、没有添加到版本库中的文件列表,同时还会推荐一些操作这些文件时可能用到的命令等;

    这个命令我用的最多,在不确定有哪些文件需要提交,哪些文件还没有提交到版本库时,我就会常常执行一下这个命令。还请大家务必掌握。

  • 指令别名

    git config --global alias.ci commit
    

    原生的Git命令有的好长,给指令起个别名,简化一下指令,简化后的指令如下:

    git ci  #注释:等价于git commit
    

  • 查看日志

    git log
    

    折腾命令可以查看我们的提交记录。需要注意的是,点击q键退出。说实话,原生态的日志真心不好看,在酷壳网看到了一个美化命令。如下:

    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --" 
    

    这时,我们就可以使用如下命令,查看美化后的日志了:

    git lg
    

  • 查看文件的修改

    git diff <文件名>
    

    这条命令可以查看一下都对文件做了哪些修改。

  • 回滚修改

    git checkout <文件名>
    

    该命令可以将没有提交的修改回滚到以后版本。

  • 删除文件

    git rm <文件名>
    

    该命令可以将文件从Git版本控制中删除,并且还将从磁盘中删除。

  • 从版本控制中删除文件

    git rm --cached <文件名>
    

    该命令只是将文件从版本控制中删除。但是不在磁盘上删除文件。

  • 文件从命名

    git mv <旧文件名> <新文件名>
    

    该命令不仅可修改文件名,还会将曾经的修改记录一起带过来。

参考资料

  1. Google–有问题,用Google百度一下。相信肯定能找到答案的;(无解的除外!)
  2. GotGithub–一本透彻讲解Github的电子书。只是图片是Github以前版本样式的。我视频中讲解到的Github网页操作基本上是这本电子书教给我的;
  3. Githug通关全攻略–将git命令融入到游戏中,真是寓教于乐!而且,这里讲解了很多Git命令的实际使用情形,建议认真看看,以备以后随时查阅;
  4. Git分支管理策略–阮一峰老师的文章,讲解的非常细致明了,而且图文并茂。另外,阮老师的博客有好多猛料,建议都看看;
  5. Git常用命令备忘–Robbin范凯写的一个备忘录,也挺全面。


作 者: D瓜哥,http://www.diguage.com/
原文链接:http://www.diguage.com/archives/42.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。



如果感觉这篇文章不错,请点击这里的分享按钮,分享到微博等地方去,让更多人受益!
您的支持是D瓜哥最大的写作动力!谢谢!

  1. 额,我接触编程使用ide比较多,git的gui工具如何避免中文乱码问题,就是我下载的项目,有些中文命名的文件就出现乱码,望指教

无觅相关文章插件,快速提升流量