Git本地项目上传,版本管理工具与GitHub的简单结合使用
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git能够帮助我们解决文件的提交、检出、回溯历史、冲突解决、多人协作模式等问题。
今天我们来介绍一下Git版本管理工具Sourcetree:
SourceTree 是 Windows 和Mac OS X 下免费的 Git 客户端,支持创建、克隆、提交、push、pull 和合并等操作。
SourceTree既有GitBash的命令行,又有EGit的图形化管理,用户界面很人性化,大大简化了开发者与代码库之间的Git操作方式,这对于那些不熟悉Git命令的开发者来说非常实用。
附上Sourcetree的下载地址:
http://pan.baidu.com/s/1kUT5c4v 提取码:qiwu
GitHub
Git是一个分布式的版本控制系统和开源库。
附网上参考博客: http://www.jianshu.com/p/b9077110e39c
注册以及github界面不再详细介绍。
一、创建远程仓库
1. 首先进入个人中心,点击头像选择Your profile
![](http://upload-images.jianshu.io/upload_images/1753433-5e2818680fe60fbe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2. 接下来我们选中仓库, New一个新的仓库
![](http://upload-images.jianshu.io/upload_images/1753433-1d29ff46ddca9201.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
3. 具体创建仓库的操作如下图
![](http://upload-images.jianshu.io/upload_images/1753433-4de3a4c074d703f4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1753433-b86f1e2c7f2e549a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
二、配置SSH Key
当我们使用GitHub时,每次进行push操作都需要我们登录用户名和密码,这样会大大的降低效率,对于我们可以在上传的时候采用另外一种解决办法—SSH key, SSH key 可以帮我们记住用户名,而且还会对我们的密码进行特殊的保护。
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
1. 检查并删除ssh key
配置之前,我们先检查一下电脑中是否存在.ssh文件, 如果有就删掉我们从新配置, 具体步骤如下:
点击Finder,前往文件夹, jens是我的主机名称,操作的时候写成自己的
![](http://upload-images.jianshu.io/upload_images/1753433-03cc22aa5006caea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
说明: 这个.ssh文件属于隐藏文件,我们可以通过 终端 显示隐藏文件
显示Mac隐藏文件的命令:defaultswritecom.apple.finderAppleShowAllFilesYES 隐藏Mac隐藏文件的命令:defaultswritecom.apple.finderAppleShowAllFilesNO
![](http://upload-images.jianshu.io/upload_images/1753433-884e1812fb5e78f2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
做完如上步骤, 我们检查一下要上传的项目中是否存在.git的文件,如果存在也给删除掉(这里我用一个空白的demo做测试)
![](http://upload-images.jianshu.io/upload_images/1753433-971281c4d85dde86.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2. 使用终端创建新的.ssh文件
为了防止出错,以下命令建议赋值粘贴
mkdir .ssh
3. 切换当前目录到.ssh文件夹下
cd .ssh
4. 创建公钥和私钥
ssh-keygen -t rsa -C"输入你的邮箱"
接下来会让我们输入密码之类的,直接回车,不做任何操作, 如下图
![](http://upload-images.jianshu.io/upload_images/1753433-583d31ac570c90be.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
5. 查看是否存在 id_rsa(私钥) id_rsa.pub(公钥),存在就成功了。
ls -la
![](http://upload-images.jianshu.io/upload_images/1753433-ff4b347793c8c10d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
6. 拷贝公钥
pbcopy < ~/.ssh/id_rsa.pub
7. 在GitHub上配置公钥
![](http://upload-images.jianshu.io/upload_images/1753433-a35d9f2476fbb8f6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1753433-898fb946327c42c8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
由于我们刚刚执行copy命令,上面直接cmd+v就可以了,然后add ssh key
![](http://upload-images.jianshu.io/upload_images/1753433-013d2716306f10ef.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1753433-8fc9d53d50a0d039.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
8. 执行如下命令
ssh -Tgit@github.com
![](http://upload-images.jianshu.io/upload_images/1753433-9854484395cc2e9c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1753433-819817f9288c66da.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
三、上传本地项目到GitHub
1. 建议Git仓库
如果你要上传的项目目录下存在 .git文件,建议删除; 使用终端切换到你要上传的目录下面, 执行
git init
![](http://upload-images.jianshu.io/upload_images/1753433-9e575d83a449342c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2. 将项目中所有文件添加到仓库中
注意add 后有个 . 建议赋值粘贴
git add .
3. 将我们添加的文件commit到git仓库, 添加注释
git commit -m "注释语句"
4. 接下来我们将本地的仓库与github上的仓库进行关联
git remote add origin github上仓库的地址
![](http://upload-images.jianshu.io/upload_images/1753433-0ef546aebf39bc8f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
5. 上传之前我们先从git上拉取一下
git pull origin master
这个过程,可能会让你输入github的账户名和密码(注意:密码输入不显示),输入完成之后会出现如下的截图
![](http://upload-images.jianshu.io/upload_images/1753433-50085981efbff10b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
这是vi编译器的窗口,不需要我们做操作,直接退出就可以,
点击Esc,输入 :wq,回车
6. push本地项目到远程仓库
git push -u origin master
![](http://upload-images.jianshu.io/upload_images/1753433-8f83d92bf600d257.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
此时我们看到又要我们输入git账号和密码,输入即可!等待完成我们就可以在github上看到我们的项目。
![](http://upload-images.jianshu.io/upload_images/1753433-c4c2d6179ac5c07f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
上传本地项目,到这里就结束了,下面我们介绍一下,git版本管理工具的简单使用。
四、Sourcetree与GitHub的简单结合使用
1. 认识sourcetree界面
界面一
![](http://upload-images.jianshu.io/upload_images/1753433-0f3cf20086018e3e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
安装的时候,会提示让你登录,直接登录你的github账号就可以了。
选中某一个项目进入界面二(工作副本)
![](http://upload-images.jianshu.io/upload_images/1753433-ae9eb161804c87a5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
界面三(master)
![](http://upload-images.jianshu.io/upload_images/1753433-3725a4e07fc04937.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
2. 熟悉一下几个操作
commit — 提交修改的内容到本地的仓库
pull — 从远程仓库进行拉取修改的代码块
push — 把本地修改的内容推送到远程仓库
3. 从远程仓库clone(克隆)项目到本地
这里我们介绍两种克隆方法 :
第一种:https url,对于使用git的初学者来说比较简单,我们只需要赋值https 的url链接,使用git版本管理工具 或者 命令行指令 克隆到本地就可以。
第二种:SSH url,如果想要使用SSH url进行克隆,我们克隆前需要配置SSH key
a. 复制克隆的链接地址, 这里我们使用ssh url 克隆。
![](http://upload-images.jianshu.io/upload_images/1753433-8308a6b9c96f1e79.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
b. 打开sourcetree,从URL创建一个克隆的项目
![](http://upload-images.jianshu.io/upload_images/1753433-be7a3caf1498f357.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
c. 输入步骤a中复制的地址
![](http://upload-images.jianshu.io/upload_images/1753433-f4fdec777992dc51.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
d. 克隆成功后双击打开如下界面
![](http://upload-images.jianshu.io/upload_images/1753433-8c2731c5ea84abb9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
我们在克隆的过程中,可能会让我们输入账号和密码,记得输入git的账号密码即可!
4、修改项目push到远程服务器
a. 下面我们打开从github上克隆到本地的项目, 做少许的修改。
![](http://upload-images.jianshu.io/upload_images/1753433-4934d26c3c92c054.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
b. 然后我们发现sourcetree界面发生了改变,它会统计到我们所做的一些修改信息
![](http://upload-images.jianshu.io/upload_images/1753433-fb886244b021ea58.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
c. 接下来,我们提交修改的内容到github
![](http://upload-images.jianshu.io/upload_images/1753433-4d60d84f8ef8d479.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
步骤3如果都选上,相当于我们把修改内容即commit到本地仓库,又push到远程仓库,
如果我们不勾选点提交,还需要我们点击菜单栏上的 “推送” 向远程仓库push推送修改内容,
如果不报错,就代表push成功。
d. 检查github上的仓库是否发生变化
![](http://upload-images.jianshu.io/upload_images/1753433-4daa243b046f35ab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
5. 从远程拉取修改内容
保存修改内容的时候, 默认勾选 “Commit directly to the master branch.”,把修改内容添加到主分支。
![](http://upload-images.jianshu.io/upload_images/1753433-83d2fb8e1dea92d5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
接下来我们就可以使用sourcetree进行拉取pull, 拉取时弹出的提示框,默认选择直接确定就好
![](http://upload-images.jianshu.io/upload_images/1753433-28c80582c452858b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
检查一下,我们会看到本地仓库与远程仓库进行同步
![](http://upload-images.jianshu.io/upload_images/1753433-ba9b3a326db3eabf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)