之前一直听说过版本控制git以及开源库github,实习的时候也用过,但是一直冥顽不化,懒癌症发作,即使开发中遇到很多版本问题。如今幡然醒悟,为了毕设,为了任务,再次开始使用起git,网上的版本很多了,这里只是自己实践中的总结,废话不多说,来点实际的。
在mac上搭建git,github做远程仓库
在github网站上注册一个github账号,这部分只要是21世纪人才就应该都懂的,创建自己的域名,这个域名将会是后面推送时的username。
创建一个仓库(如下图),填写仓库信息。
从上而下依次是仓库名、仓库描述(可选)、公开或私密、初始化
a. 私密库需要交钱,不是土豪,略过b. 初始化有两种方式:
- 一种是github帮助你初始化,即勾选initialize this repository with a readme,选择好gitignore和license,github就帮助你创建三个git的文件,这种方式比较方便,相当于你完全建好了远程仓库,此时你只要把远程仓库clone到本地,再把你项目文件放到其中提交即可,具体命令见4-a。
- 另一种是自己建好本地仓库,再把本地仓库与远程仓库绑定,也就是不勾选initialize this repository with a readme,具体命令见4-b。
下载git程序包,安装git
ps:链接中的程序包是2.6.2 for marvericks,但是yosemite10.10.5也是可以安装的,因此就用它了。创建本地仓库,绑定远程仓库(两种方式)
a. 你已经让github帮你创建初始化仓库了,因此此时你需要将远程仓库clone到本地,在把你的项目文件放进去提交即可。
你可以点击 set up in Desktop:
你也可以用命令:b. 如果你选择自己初始化本地仓库,那么就需要先建立本地仓库,通过mac bash命令进入你的工程文件目录
- 列出当前目录下得文件及文件件:ls
- 进入文稿目录下面的目录:cd ~/documents/…
运行git命令
- 初始化:git init
- 提交给本地仓库:git commit -m “first commit”(”“中是描述此次操作的更改)
- 绑定本地仓库和远程仓库:git remote add origin https://github.com/shawjan/VRPVisual.git
- 推送本地仓库至远程仓库:git push -u origin master
- 此时如果你没对本地git进行配置,那么会有下面的步骤,输入仓库账号名以及密码(仓库名即你之前设置的域名)
- 你可以在github上添加readme文件,也可以在本地添加readme文件:git Add README.md
现在你就拥有了工程的github远程库了。你可以切出新分支(branch),修改工程后提交到本地仓库(commit),可能需要解决冲突(conflict),需要合并分支(merge),在推送到远程仓库(push)等等,下面做具体介绍。
git的工作原理
以github为公共服务器,开发者从github上面pull/fetch工程分支,并在本地修改,之后commit给本地仓库,这是可能会与其他开发者的修改版本冲突,因此需要解决冲突(conflict),在push到远程仓库,只有主开发者才有权限合并到master分支,其他开发者只能修改合并非master分支。
pull与fetch的区别是pull不会自动合并checkout分支和本地代码,而fetch会,这意味着fetch很有可能把你本地代码修改冲掉,十分危险。
在我看来,解决冲突是git中最难的地方,我比较喜欢用sourcetree来解决,可视化比较直观。git的常用操作
- 配置
//可以用如下命令来查看配置
git config --list
//设置用户名 邮箱
git config --global user.name "s***n"
git config --global user.email d***e@gmail.com
ps:这里–global便是git会用该信息处理你在系统中的一切操作,如果你像 特定的项目中使用不同的名称或e-mail地址,那么可以在该项目中运行该命令而不要–global
//执行如下代码产生ssh密钥
$ ssh-keygen -b 1024 -t dsa
//一直回车使用默认路径
Generating public/private dsa key pair.
Enter file in which to save the key (/Users/shawjan/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
//产生如下结果
Your identification has been saved in /Users/shawjan/.ssh/id_dsa.
Your public key has been saved in /Users/shawjan/.ssh/id_dsa.pub.
The key fingerprint is:
f4:80:f3:9e:8c:06:52:f3:ee:8c:e4:18:4c:17:72:83 shawjan@shawjaneMacBook.lan
The key's randomart image is:
这时候密钥就生成了,你需要把id_dsa.pub中的公钥加到github上面去
//查看公钥,复制公钥
$ vi id_dsa.pub
title随便定一个,key粘贴public key
更多配置参考《 配置文件git config介绍》《git 环境搭建进阶》
- 克隆项目 clone
- 检出分支 checkout
- 提交commit
参考文章:
https://www.atlassian.com/git/tutorials/setting-up-a-repository/
http://blog.csdn.net/fireelement/article/details/9618363
http://www.cnblogs.com/wangxiaofeinin/p/3561518.html
http://blog.csdn.net/nitghost/article/details/6159761