git是版本控制工具,主要用来监测和记录纯文本文件所做的更改。git可以将所做的修改远程提交到git repository (如 github) 。 同时, 每一个git用户可以设定多个分支。 其中master分支, 一般作为软件的正式发布版本。 以其他名字命名的分支, 可以进行debug。 不同的分支之间, 可以合并。 而每一次提交修改, 都是在本地的repository库中进行, 只有在push到远程的repository后, 远程repository才接收到更改的记录, 并作出改变。
这样, 每一个本地的git repository都有关于主干(即对master分支的修改), 以及本地分支(任何一个master以外的分支)的完整记录。 由于修改都是先提交到本地的git数据库中,因此提交修改速度都很快。
本文以 herblabel R程序包为例, 介绍如何使用git, 以及如何将herblabel的源代码托管到github上。
- 在github上, 创建相应程序包的repository, 如命名为 herblabel
网址为 https://github.com/helixcn/herblabel
若未安装git, 需要在terminal输入 sudo apt-get install git
- 第一次使用本地版本的git时,需要设定用户名和联系方式
打开 terminal,输入
1 | git config --global user.name "Jinlong Zhang" |
- 更改 credential helper缓存密码的时间
git config --global credential.helper 'cache --timeout=3600'
- 在本地/herblabel/文件夹中 创建本地的repository
1 | cd /home/jinlong/git_repositories/github_herblabel/ |
- 在/herblabel/文件夹下, 将herblabel 源代码记录到git库中。
git add *
- master版本, 即最终发布版本,commit到本地的库中
git commit -m 'initial commit'
- 推送到github
git push -u origin master
git会提示输入github的用户名和密码, 输入后, git会自动将master分支上传到服务器。
将master分支推送到github服务器后, 每一次在本地进行修改时,如修整了软件的一个bug, 一般流程如下
- 新建一个分支 如 herblabel_dev 命令如下 git checkout -b herblabel_dev
- 修改代码, fix the bug
- 回到master分支 git checkout master
- 将herblabel_dev所做的修改合并到master中: git merge herblabel_dev
- 提交所做的修改 git add *
- 记录所做的修改 git commit -m “XX bug fixed”
- 提交所做的修改到github服务器 git push,
本地使用分支 Branch
9. 创建一个新的分支(branch),将其作为活动分支(checkout),然后就可以编辑、载入和提交新的快照。
创建新的分支herblabel_dev
git branch herblabel_dev
git checkout herblabel_dev
git status
git commit -m 'Fix Bug A'
$ git checkout master
$ git commit -a -m 'change files'
git merge herblabel_dev
git branch -d herblabel_dev
如果在本地删除了某文件, 而同时希望在github上删除, 则应该先commit
git commit -a -m "A file was deleted"
之后push
git push
放弃本地所做的所有修改比如master分支:
git reset --hard origin/master
可以用 gitg 软件查看所做的更改以及分支
更多git的图形用户界面GUI参见 https://git-scm.com/downloads/guis