一、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 "ning.ye@gewara.com"
$ cat ~/.ssh/id_rsa.pub
本地测试ssh是否生效
ssh -T git@192.168.2.253
## Welcome to GitLab。
初始化操作
$ git config --global user.name <name> #设置提交者名字 git config --global user.name "叶宁"
$ git config --global user.email <email> #设置提交者邮箱 git config --global user.email "ning.ye@gewara.com"
$ git config --global core.editor <editor> #设置默认文本编辑器
$ git config --global merge.tool <tool> #设置解决合并冲突时差异分析工具
$ git config --list #检查已有的配置信息
创建新版本库
$ git clone <url> #克隆远程版本库 git clone git@X.X.X.X:root/datacenter.git
$ git remote add origin <url> #将本地目录添加到远程版本库 git remote add origin
git@X.X.X.X:root/datacenter.git
$ git init #初始化本地版本库
修改和提交
$ git add . #添加所有改动过的文件
$ git add <file> #添加指定的文件
$ git mv <old> <new> #文件重命名
$ git rm <file> #删除文件
$ git rm -cached <file> #停止跟踪文件但不删除
$ git commit -m <file> #提交指定文件
$ git commit -m “commit message” #提交所有更新过的文件
$ git commit -amend #修改最后一次提交
$ git commit -C HEAD -a -amend #增补提交(不会产生新的提交历史纪录)
查看提交历史
$ git log #查看提交历史 --graph 查看分支合并图 --pretty=oneline --abbrev-commit
$ git log -p <file> #查看指定文件的提交历史
$ git blame <file> #以列表方式查看指定文件的提交历史
$ gitk #查看当前分支历史纪录
$ gitk <branch> #查看某分支历史纪录
$ gitk --all #查看所有分支历史纪录
$ git branch -v #每个分支最后的提交
$ git status #查看当前状态
$ git diff #查看变更内容
撤消操作
$ git reset -hard HEAD #撤消工作目录中所有未提交文件的修改内容
$ git checkout HEAD <file1> <file2> #撤消指定的未提交文件的修改内容
$ git checkout HEAD. #撤消所有文件
$ git revert <commit> #撤消指定的提交
工作现场
$ git stash list #查看工作现场列表
$ gitgit stash #保存工作现场
$ git stash apply
$ git stash drop #恢复工作现场
$ git stash pop #恢复工作现场
分支与标签
$ git branch #显示所有本地分支
$ git checkout <branch/tagname> #切换到指定分支或标签
$ git branch <new-branch> #创建新分支
$ git branch -d <branch> #删除本地分支
$ git tag #列出所有本地标签
$ git tag <tagname> #基于最新提交创建标签
$ git tag -d <tagname> #删除标签
合并与衍合
$ git merge <branch> #合并指定分支到当前分支
$ git rebase <branch> #衍合指定分支到当前分支
$ git reset --hard commitid #回滚版本
远程操作
$ git remote -v #查看远程版本库信息
$ git remote show <remote> #查看指定远程版本库信息
$ git remote add <remote> <url> #添加远程版本库
$ git fetch <remote> #从远程库获取代码
$ git pull <remote> <branch> #下载代码及快速合并
$ git push <remote> <branch> #上传代码及快速合并
$ git push <remote> : <branch>/<tagname> #删除远程分支或标签
$ 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/