Created by Charles Liu
# 通过目录共享版本库
$ git clone /opt/git/project.git
$ git clone file:///opt/git/project.git
# 通过http协议共享版本库
$ git clone https://example.com/gitproject.git
# 通过ssh协议共享版本库
$ git clone ssh://user@server/project.git
$ git clone user@server:project.git
功能 | Github | Gitlab CE |
---|---|---|
同步代码 | 可以 | 可以 |
托管方式 | 托管 | 自建服务器 |
文件查看 | 支持 | 支持 |
分支管理 | 支持 | 支持 |
代码审查 | 支持 | 支持 |
合作方式 | 派生+拉取请求 | 派生+合并请求 |
费用 | 开源免费,闭源收费 | 自建免费,托管收费 |
git remote
# emoji-minesweeper项目
$ git remote -v
origin git@github.com:dodoinblue/emoji-minesweeper.git (fetch)
origin git@github.com:dodoinblue/emoji-minesweeper.git (push)
多个remote的项目看起来像是下面这个样子
defunkt https://github.com/defunkt/grit (fetch)
defunkt https://github.com/defunkt/grit (push)
koke git://github.com/koke/grit.git (fetch)
koke git://github.com/koke/grit.git (push)
origin git@github.com:mojombo/grit.git (fetch)
origin git@github.com:mojombo/grit.git (push)
通过init创建的git没有remote
# emoji-minesweeper项目
$ git branch --all
* master
remotes/origin/HEAD -> origin/master
remotes/origin/gh-pages
remotes/origin/master
remotes/origin/randos
git fetch [remote-name]
用变基(rebase)而不是合并merge
$ git fetch
$ git rebase origin/master
git pull
$ git pull --rebase
git push
$ git push origin master
$ git push origin charles-feature-name
$ git push origin --delete serverfix
To https://github.com/schacon/simplegit
- [deleted] serverfix
git tag
# 列出标签
$ git tag -l
0.1.0
0.1.1
0.1.2
# 添加标签
$ git tag -a tagname commit-id
# 共享标签(推送到服务器)
$ git push origin tag-name
# 推送所有标签
$ git push origin --tags
# 检出标签
$ git checkout 0.1.0