一、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/