Github在windows7环境下使用入门
1.下载并安装
下载和安装一般都没什么问题,网上的链接一大堆,不过还是在此给一个安装的地址和安装的参考吧。
当然,安装完成后要保证git能使用,必须配置github
2.配置github
- 首先是要创建本地ssh,具体命令如下:
ssh-keygen -t rsa -C youemail@xxx.xxx生成过程中会让你输入用户名和邮箱,出现错误不要管,提示输入yes就好了,然后进入生成的ssh目录中,将公钥打开(一般名为id_rsa.pub),将其中内容复制到github个人主页的ssh(操作顺序见下图)
- 验证是否配置成功
需要注意的是,由于github软件也可以为gitlab提供服务,本地生成的ssh密钥可能过期了,因此,当出现莫名其妙的错误的时候,可以尝试重新生成一下ssh key,比如,我曾经遇到过这样一个错误:
无效的操作:GIT_COMMITTER_IDENT
原因就是之前我用别的邮箱生成过密钥,因为长时间没有用github了,所以当时也没反应出来是什么错误,花了好一会理清思路之后有两个解决方案:
- 将之前公钥的内容复制进账户的ssh
- 如果还不行,重新生成密钥,再复制进账户的ssh
3.关于Git bash
安装完成之后在电脑端会有两个程序,一个Git Bash ,一个Git GUI,如下:
Git Bash是一个命令行操作的类dos界面,在里面敲击命令就跟在linux里面敲命令是一样的,因此熟悉了git操作的话用Git Bash来操作也是很方便的。
一般来说,在github主页上建立了新的repository之后,在repository的主页有对应的bash命令教你如何第一次上传和更新。如我的一个项目给出的提示如下:
4.关于Git GUI
对于不熟悉Git语法的人来说,最简明的方法莫过于直接用图形化界面Git GUI了,它和Git Bash可以完成的功能是一样的,每个图形化的操作都对应着一个Git Bash的指令,下图是图形化界面的全貌:
其中右下方的几个按钮的作用解释如下:
重新扫描:顾名思义就是扫描本地改动
缓存改动:将改动保存到缓冲区
签名:加上签名
提交:提交到本地仓库,需要加上提交时的说明信息
上传:上传到服务器,当然需要有github账号
5.一个使用的例子
我写了一个二叉树的算法框架,代码组织是这样的,在D:\codesep\…\Src下面有我要管理的代码,分别放在两个文件夹中,一个为include文件夹,一个为cpp文件夹。如下所示:
当我启动Git GUI时,我选择创建一个新的版本库(create a new repository)
选择D:\codesep\…\Src为本地目录,然后在此目录下多出了一个.git的文件夹,如下:
这之后D:\codesep\…\Src中的文件都会出现在下面界面的“未缓存的改动”一栏中,点击缓存改动(会提示你确认是否stage),文件转移到缓存的改动中。
缓存前: 缓存后:
点击“提交”,代码进入本地版本库。圈出来的红色框中会显示你的提交信息。
这些都好办,接下来是“上传”,上传按钮点击之后又如下界面。
目前我对git还不是特别了解,所以只解释源端分支和目标版本库:
源端分支是本地版本库的一个分支,因为目前我们只有master,即主分支,只能选这一个,目标版本库git@github.com是一样的表示github服务器,后面的一个是github的账户名(obalama是我的账户名),一个是在github上托管的版本库(比如说我有个版本库是BinaryTreeFrame,那么目标版本库的写法就是上述写法),点击“上传”按钮,输入ssh密码(第一步里面配置的密码)
成功之后显示如下:
有时候不成功就多试几次,可能是网速不好,也可能是因为github国内服务不稳定,待成功后,github的web页面上会显示出上传的版本库信息:
需要注意的是,如果在github主页上建立repository时选择了创建readMe.md或者.gitignore等文件时,用图形界面在最后一步输完密码开始push时会报错:
“Github “Updates were rejected because the remote contains work that you do not have ”
这时候只能借助bash来将这些文件先同步到本地仓库,然后再次push,具体命令如下
git remote add origin + git_url//(例子:git remote add origin https://github.com/obalama/VelocityHelloworld_2.git)
//然后将github上的文件拉到本地
git pull origin master//最后完成push
git push origin master
6.说明
实际上GUI操作都有等效的bash操作,以上面的例子作类比,等过几天有了时间再总结一个类比。
7.参考