简介
github是备份工作记录的优秀工具,工作机制比较复杂,但是使用却非常简单。github相当于文件备份的云,其上传操作和云的同步功能类似,下载和普通下载类似。上传工作原理如下图。
working dir是本地目录,HEAD是云目录,中间的index是缓存区。若要实现本地与github上同步,首先把要同步或要修改的文件或代码在缓存区(index)整理好,然后统一提交(commit)到云。
下面用一个简单的例子介绍github的使用。
例如:将一个简单的java工程上传到github。
* HelloWorld工程在workspace文件夹下。
* HelloWorld文件夹下有src,bin,lib子文件夹,分别存放源代码,可执行文件和库。
准备工作
准备比较麻烦,但一劳永逸。真正使用就非常简单了,最常用的上传修改和下载只要记住几行命令即可。
1.申请帐号:Click Here
- 邮箱作为帐号,例如我的github帐号:cynorr @ sina.com
- 用户名:sinorr
2.创建Repository
- 点击 New Repository
- 创建一个名为HelloWorld的Repository。
3.配置SSH keys
这一步就像QQ设备管理,例如你的1号PC生成长串乱码(passphrases),预存到github帐号信息里,就保证你的1号PC可以安全的连接github。如果你有多台PC,要在github帐号里面添加各个PC生成的SSH keys。只要完全按照命令打上去就完成了,如果想要了解passphrases工作原理:Click Here
$ ssh-keygen -t rsa -C "cynorr@sina.com" #引号里面填写你的github邮箱
你会看到
Creates a new ssh key using the provided email
Generating public/private rsa key pair.
Enter file in which to save the key (/home/.ssh/id_rsa):
直接点击回车,不要输入任何东西。
$ Enter passphrase (empty for no passphrase): #输入一个密码,这将是以后在终端下链接github的密码
$ Enter same passphrase again: #再次输入,确认密码
接着会出现
Your identification has been saved in /your_home_path/.ssh/id_rsa.
Your public key has been saved in /your_home_path/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db cynorr@sina.com
继续
$ eval "$(ssh-agent -s)"
Agetn pid xxxxx
$ ssh-add ~/.ssh/id_rsa
到此,生成了所在PC的一个key,下面一步只要是把这个可以添加到github上就好了。
操作如下:
$ gedit ~/.ssh/id_rsa.pub #用文本管理器打开ssh文件
#然后把里面的内容全选,复制到剪切板
进入你的github主页,依次进入
设置 -> SSH keys -> Add SSH key
之后,你会看到你个空的标题,和ssh文本框。
标题可以写上你的PC名称,比如“实验室机器”,内容就是刚才复制的ssh文件内容,直接粘贴进去。
点击 右下方的Add key。
4.全局配置
git config --global user.name "sinorr" #引号里填自己github的用户名
git config --global user.email cynorr@sina.com #田写github邮箱
到此,准备工作结束,一劳永逸。
上传文件
1.初始化本地文件夹
$ cd workspace/
$ git init #该操作会在workspace文件夹下生成.git的文件夹,存放要链接的github帐号信息。
$ git add HelloWorld/ #把java的HelloWorld整个文件夹先放到缓存区。
$ git commit -m 'all file' #commit是从缓存区到github上的操作集合,例如本次的操作只是add HelloWorld/
#如果还有其他操作,全部写在commit前面,例如删除,编辑等操作。
$ git remote add test git@github.com:sinorr/HelloWorld.git #指定要存的Repository
#如果下面的操作(添加或删除文件)都在HelloWorld的Repository中,就不用在重复创建remote,直接引用已经创建好的test即可。
$ git push -u test master # 最后一步,执行同步命令。
下面可以到github个人主页上验证有没有把代码传上去了。
下载文件
相对简单,一个fork加一行命令,两步搞定。
例如,在其他用户上找到网络爬虫的git,想要下载下来。
git名称:spider.git
1.fork到自己的github
找到fork按钮,点击。就可以复制到自己的github上
2.下载
$ git clone git@github.com:sinorr/spider.git
下载完毕
$ ls #看看spider的文件夹有没有下载到本地