Git学习笔记
-
写作目的
-总结一天的学习内容,方便以后查阅 -
写作内容
包括git提交,创建分支,推分支,分支合并,版本退回,冲突解决等内容。
一、版本库
(1)早期的直接访问式版本控制系统
(2)集中式版本库的版本控制系统
局限性:在本地工作目录树中只能看到代码的最新版本,要想查询历史修改记录就必须与服务器上的版本库打交道。
(3)分布式版本控制系统
优点:每个人都会在本地有自己的版本库,而不是连接到服务器上的一个公共的版本库
二、分支的创建、删除、改名、查询、切换、合并
1、创建分支
(1)在当前分之下创建新分支 : git branch + 新分支名 ( 如 : git branch RB_1.0 )
(2)在父分支上创建新分支 : git branch + 新分支名 + 父分支名( 如 : git branch RB_1.0 master )
(3)在标签上创建新分支 : git branch + 新分支名 + 标签名 ( 如 : git branch RB_1.0.1 1.0 )
(4)在父分支上创建新分支并切换到新分支上 :git branch -b + 新分支名 + 父分支名
2、删除分支
(1)git branch -d + 要删除的分支
**注意!**只有当要删除的分支已经合并到当前分支,删除分支的操作才能成功
(2)强删除 :git branch -D + 要删除的分支
3、分支重命名
git branch -m + 旧分支名 + 新分支名
4、查询分支
(1)查询本地分支 git branch
(2)查询远程分支 git branch -r
5、切换分支
git checkout + 分支名 ( 如 : git checkout RB_1.0 )
6、合并分支
(1)直接合并 : git checkout + 目标分支 --> git merge + 源分支 (将源分支上的所有历史提交合并到目标分支 )
(2)压合合并 : git checkout + 目标分支 --> git merge --squash + 源分支 (将源分支上的所有历史提交合并成一个提交再合并到目标分支)
(3)拣选合并 : 1、合并一条历史记录 :git checkout + 目标分支 --> git cherry-pick + 提交名称 (如下图的28dd44c )
2、合并多条历史记录:git checkout + 目标分支 --> git cherry-pick -n + 提交名称 -->git commit
三、查看修改内容
(1)git diff , 比较工作目录树和暂存区两者中代码的区别
(2) git diff --cached ,比较暂存区和版本库两者中代码的区别
(3)git diff HEAD , 比较(工作目录树和暂存区)和版本库 两者中代码的区
四、查看历史记录
(1) git log ,显示全部( “j”向下浏览,“k”向上浏览,“q”退出 )
(2) git log -p ,显示代码的修改
(3) git log -2 , 显示两条历史记录,可改变数值查看多条记录
(4) git log + 提交名称 ,查看从那时起到现在的提交记录
五、git 的几个常用
(1) add
- 暂存一个修改文件 :git add + 文件名(若有后缀需加上 )
- 暂存工作目录树下所有修改文件 : git add .
(2)commit
- git commit ,提交并启动编辑器
- git commit -m “…” -a ,”…“表示提交留言,提交工作目录树中的所有修改
- git commit -m “…” + 文件名,”…“表示提交留言,提交文件下的所有修改 ( 如: git commit -m “…” some-file )
(3)查询状态 : git status
(4)给分支添加标签 git tag + 标签名 + 分支名 ( 如: git tag 1.0 RB_1.0 )
六、git 提交
(1)第一次发布项目(本地—远程):
- git add
- git commit -m “…”
- git push –u origin master
或者 git push + 远程版本库名称 + 要push的本地分支 + “:”+ 远程接收分支
(2)第一次下载(远程—本地)
git clone + 远程仓库地址( 可以是 git协议的 或是 http/https 协议的 )
更新版本库时 :git pull + 远程版本库名称 + 要拖入的远程分支
七、版本回退
- 回到上一个版本 : git reset –hard HEAD ^
- 回到上一版本后需要返回原来版本时 :
先通过 git reflog 获得原来版本的版本号,再通过git reset --hard + 版本号 回到原来版本
八、解决冲突
当两个伙伴在不同分支对同一文件同一部分进行不同处理需要合并分支时引起冲突,Git会提供合并工具,显示各冲突区域,供用户选取定夺。