背景知识:
1.什么是Git?
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius、Merb和Bitcoin在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。
2.Git与Github有什么区别?
git是一种版本控制系统。跟svn、cvs是同级的概念。
github是一个网站,给用户提供git服务。这样你就不用自己部署git系统,直接用注册个账号,用他们提供的git服务就可以。
笔记摘要:
本文主要记录win下git如何与github同步工作,使用git实现项目到本地的克隆及以本地项目到github的推送和更新。
一 、申请一个githbub账号(略);
二 、下载git软件,从http://msysgit.github.io/下载并安装;
三 、在桌面,右击,从菜单中选择Git Bash Here,在Git Bash中生成SSH Key;
- 配置本地用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "youemail@example.com"
创建SSH Key
在用户的主目录下如:C:\Users\Rona\,查看是否存在.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,自己创建一个新的SSH Key,输入如下命令:
$ ssh-keygen -t rsa -C "youremail@example.com"
注:此时会会让你输入你要存放. ssh /id_rsa文件的路径,回车即可,它就会生成到默认的用户主目录下,然后提示输入新密码(passphrase),可以设置,也可直接为空,确认回车。生成的ssh key保存在id_rsa.pub文件中
四 、在GitHub网页中,添加SSH Key;
注:为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
五 、在Git Bash中配置本地库;
- 创建本地库;
$ cd /e/
$ mkdir git
$ cd git
$ pwd
/e/git
- 通过 git init 命令把这个目录变成Git可以管理的仓库:
$ git init
注:Git就把仓库到这里就建好了,你现在有了一个空的仓库(empty Git repository),输入ls -a,你可以发现当前目录下多了一个 .git 的目录,这个目录是Git来跟踪管理版本库的,千万不能手动修改这个目录里面的文件,否则Git仓库会被损坏。
- 在github上新建或fork一个repository,并用git将repository的ssh克隆到本地
$ git clone git@github.com:Rona111/odoo_translation.git
注:在github上选择repo的URL,最好选择ssh。因为github上传你的提交需要使用ssh进行无密码验证身份。
六 、更新本地库,库(repo);
- 添加主库master repo. 到你的库里,执行如下命令
$ cd odoo_translation/
$ ls
$ git remote -v #此时本地repo只有两条oragin的repo
$ git remote add master https://github.com/odoo-cn/odoo_translation.git
$ git remote -v #此时本地repo多出了两条master的repo
- 同步主库,执行如下命令
git pull master master #后一个master是分支的名字
注:此时,你的本地库与odoo-cn/odoo_translation主库是同步的。你可以打开本地的一个文件查看,已同步了github上的最新文件。
七 、在本地使用Git创建分支并推送本地修改到github;
- 在本地新建一个分支
$ git checkout master -b Rona_proj #新建分支
$ git branch -a #查看分支
- 创建本修改(只是演示案例)
在刚才的目录下新建一个test文件夹和和一个11.txt文件
$ mkdir test
$ cd test
$ touch 11.txt
- 提交本修改到github
我们要将本地的repo 同步到github repo,执行以下命令
$ git push --all origin
此时,你就完成了本地修改的推送了,同步之后,你可以去你的github,可以看到你提交pull request.在页面上填写提交信息后,点击compare & pull request,本地的修改就提交到刚刚的Rona_proj分支了,如果你要合并到master分支,那你就继续填写提交信息,然后提交create pull request,这样,你分支的内容就要会合并到master repo了。
附:常用的git命令
$ git checkout XX #切换到XX分支
$ git branch #查看分支
$ git merge dev #将次分支合并到主分支上面:
$ git log --graph #命令可以看到分支合并图。
$ git branch -d dev #删除分支
$ git status #显示修改的文件
$ git diff #查看修改的部分
本文参考网址:
https://github.com/odoo-cn/odoo_translation https://github.com/Rona111/odoo/blob/master/doc/git.rst