Git基本概念
版本控制系统(VSC)是软件,帮助开发人员携手合作,达到允许开发人员同步工作,不覆盖对方的变化,维护历史每一个版本的目标
Git是一个分布式的版本管理系统
git和svn的区别
- 分布式和集中式
- 储存方式git基于key/value的方式存储文件,svn是原始文件的储存方式(新版svn已改成元数据存储)
- 使用方式:SVN只需要commint,而GIT需要add、commint、push三个步骤
GIT核心命令和使用
初始化提交
- 基于远程仓库克隆至本地:
git clone <remote_url>
- 当前目录初始化为git本地仓库:
git init <directory>
- 添加制定文件至暂存区:
git add <fileName>
- 添加指定目录至暂存区:
git add <direction>
- 添加所有:
git add -A
- 将指定目录及子目录移出暂存区:
git rm --cached target -r
- 提交至本地仓库:
git commit file -m '提交备注'
- 快捷提交至本地仓库:
git commit -am '快添加与提交'
- 提交本地的test分支作为远程的master分支:
git push origin test:master
- 提交本地dev分支作为远程的dev分支:
git push origin dev:dev
/git push origin dev
分支
- 查看当前分支:
git branch [-avv]
- 基于当前分支新建分支:
git branch <branch name>
- 基于提交新建分支:
git branch <branch name> <commit id>
/git branch -d {dev}
- 切换分支:
git checkout <branch name>
- 合并分支:
git merge <merge target>
解决冲突,如果因冲突导致自动合并失败,此时status为mergeing状态,需要手动修改后重新提交(commit)
远程仓库
- 添加远程仓库:
git remote add origin http:xxx.xxx
- 删除远程地址:
git remote remove origin
- 上传新分支至远程:
git psuh --set-upstream origin master
- 将本地分支与远程建立关联:
git branch --track --set-upstream-to=origin/dev dev
tag管理
- 查看当前:
git tag
- 创建分支:
gti tag <tag name> <branch name>
- 删除分支:
git tag -d <tag name>
日志
- 查看当前分支下所有提交日志:
git log
- 但行显示日志:
git log --oneline
- 比较两个版本的区别:
gti log master..dev
- 控制显示的记录格式:
git log --pretty=format:" " --graph
常用的格式占位法及其代表意义:
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明