一、Git安装
windows:https://git-for-windows.github.io/
linux:略
二、TortoiseGit安装
https://tortoisegit.org/
三、基本操作命令
生成 SSH 公钥,上传到远程代码管理服务器(http://dn1.gewara.cn/profile/keys)
http://erning.net/blog/2012/11/02/gitflow-at-anjuke-inc/http://erning.net/blog/2012/11/02/gitflow-at-
anjuke-inc/
$ ssh-keygen -t rsa -C "[email protected]"
$ cat ~/.ssh/id_rsa.pub
本地测试ssh是否生效
ssh -T [email protected]
## Welcome to GitLab。
初始化操作
$ git config --global user.name
$ git config --global user.email
$ git config --global core.editor
$ git config --global merge.tool
$ git config --list #检查已有的配置信息
创建新版本库
$ git clone
$ git remote add origin
[email protected]:root/datacenter.git
$ git init #初始化本地版本库
修改和提交
$ git add . #添加所有改动过的文件
$ git add
$ git mv
$ git rm
$ git rm -cached
$ git commit -m
$ git commit -m “commit message” #提交所有更新过的文件
$ git commit -amend #修改最后一次提交
$ git commit -C HEAD -a -amend #增补提交(不会产生新的提交历史纪录)
查看提交历史
$ git log #查看提交历史 --graph 查看分支合并图 --pretty=oneline --abbrev-commit
$ git log -p
$ git blame
$ gitk #查看当前分支历史纪录
$ gitk
$ gitk --all #查看所有分支历史纪录
$ git branch -v #每个分支最后的提交
$ git status #查看当前状态
$ git diff #查看变更内容
撤消操作
$ git reset -hard HEAD #撤消工作目录中所有未提交文件的修改内容
$ git checkout HEAD
$ git checkout HEAD. #撤消所有文件
$ git revert
工作现场
$ git stash list #查看工作现场列表
$ gitgit stash #保存工作现场
$ git stash apply
$ git stash drop #恢复工作现场
$ git stash pop #恢复工作现场
分支与标签
$ git branch #显示所有本地分支
$ git checkout
$ git branch
$ git branch -d
$ git tag #列出所有本地标签
$ git tag
$ git tag -d
合并与衍合
$ git merge
$ git rebase
$ git reset --hard commitid #回滚版本
远程操作
$ git remote -v #查看远程版本库信息
$ git remote show
$ git remote add
$ git fetch
$ git pull
$ git push
$ git push
$ git push -tags #上传所有标签
$ git log --pretty=oneline #查看日志
四、分支管理
分支模型: http://lizhihan.info/2015/04/20/Git%20Flow%E6%B5%81%E7%A8%8B%E4%BB%8B%E7%BB%8D%E5%8F%8A%E4%BD%BF%E7%94%A8/
一个项目的分支:
master: 主分支
develop: 开发分支
feature: 特性分支
release: 发布分支
hotfix: 修复分支
主要分支:master、develop
辅助分支:feature、release、hotfix
五、其他辅助命令
1、自定义格式显示git log
# 按作者时间倒序列出所有的本地branch
$ git for-each-ref --sort=-authordate \
--format="%(authordate:iso8601) %(objectname:short) %(refname:short)" \
refs/heads/
# 按作者时间倒序列出所有的tag
$ git for-each-ref --sort=-*authordate \
--format="%(*authordate:iso8601) %(objectname:short) %(refname:short)" \
refs/tags/
$ git log --graph --abbrev-commit --pretty=format:'%h -%d %s'
$ git log --graph --oneline --decorate --all
六、参考文档
https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5
http://blog.isming.me/2014/09/26/git-rebase-merge/
http://josh-persistence.iteye.com/blog/2235732
http://backlogtool.com/git-guide/cn/reference/git-svn.html
http://talk.ninghao.net/t/kai-fa-shi-yong-de-git-fen-zhi/473
http://blog.atime.me/note/git-workflow-and-conventions.html
https://www.zybuluo.com/Interista/note/107676
http://erning.net/blog/2012/11/02/gitflow-at-anjuke-inc/