Git&Github社区化协作使用指南
礼多人不怪
第一次录制视频,质量欠佳,尤其是字体太小,看不清楚,让各位朋友失望了。万分抱歉!下面我把视频所涉及的指令做一个详细说明,略表歉意!
为了和视频统一起来,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 <旧文件名> <新文件名>
该命令不仅可修改文件名,还会将曾经的修改记录一起带过来。
参考资料
- Google–有问题,用Google百度一下。相信肯定能找到答案的;(无解的除外!)
- GotGithub–一本透彻讲解Github的电子书。只是图片是Github以前版本样式的。我视频中讲解到的Github网页操作基本上是这本电子书教给我的;
- Githug通关全攻略–将git命令融入到游戏中,真是寓教于乐!而且,这里讲解了很多Git命令的实际使用情形,建议认真看看,以备以后随时查阅;
- Git分支管理策略–阮一峰老师的文章,讲解的非常细致明了,而且图文并茂。另外,阮老师的博客有好多猛料,建议都看看;
- Git常用命令备忘–Robbin范凯写的一个备忘录,也挺全面。
原文链接:https://wordpress.diguage.com/archives/42.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
支持LZ!!
我还是不习惯直接用命令,mac 上有git 的图形界面工具,Source tree, 还有windows版本,用起来不错
最近发现了SmartGit,也很好用。哈哈
我看到了sublime嘿嘿
我用的我朋友的电脑录制的。我不会告诉你,这个软件是我推荐给他的。哈哈
ungit也很不错,很漂亮。
求高清版下载,令加ppt文档下载。
由于首次录制,效果不好。没啥高清版,以后有机会从新录制一下吧。
PPT可以给你。哈哈
不错
但是。。 Git 的发音貌似不对
好吧,下次改正。哈哈
额,我接触编程使用ide比较多,git的gui工具如何避免中文乱码问题,就是我下载的项目,有些中文命名的文件就出现乱码,望指教