Git导图
2021-08-28 19:16:42 0 举报
AI智能生成
Git思维导图
作者其他创作
大纲/内容
8. 分支操作
分支介绍
介绍
在版本控制过程中,使用多条线同时进行开发
多位同事分工合作,每条线互补影响,在完成的时候整合即可
Git中是通过分支来实现的,分支之间代码隔离,可以切换、合并分支
好处
多个分支(功能)同时开发,相互堵路,互不影响
如果一个功能开发失败,功能被抛弃,删除分支即可,对主线代码不会产生任何影响
查看分支
查看本地分支
git branch
查看远程分支
git branch -r
查看所有分支,本地+远程
git branch -a
创建分支
git branch [分支名称]
切换分支
git checkout [分支名称]
合并分支
checkout 切换到最终分支
git merge [要合并的分支]
删除本地分支
git branch -d [要删除的分支名称]
git branch -D [要删除的分支名称] 强制删除
推送本地新分支到远程
git push -f [远程库别名] 分支名称 强制推送本地分支到远程
删除远程分支
git branch --delete [远程分支名称]
9. 远程库操作
介绍
使用Git一般都会选择一个或者多个远程库作为服务端
公司内部:GitLab
开源的:GitHub、Gitee
添加远程库
git remote add [分支别名] [仓库地址]
查看远程库列表
git remote -v
拉取
抓取
git fetch
合并
抓取之后会在本地创建一个合并分支
手动吧这个合并分支merge到本地分支
抓取并且自动合并
git pull
推送
git push [仓库别名/地址] [分支名]
git push -f [仓库别名/地址] [分支名] 强制推送
克隆
git clone [仓库地址] [拉取到本地的文名]
10. tag标签操作
介绍
在项目构建过程中,如果要发行版本,需要做一个记录,以便于以后需要的时候,重新打包这个版本。这个时候就需要tag这个功能了
创建标签
给当前最新提交打tag
git tag -a `tagName` -m `注释`
给指定的commitId打tag
git tag -a `tagName` `commitId` -m `注释`
查看标签
查看标签列表
git tag [--list]
查看单个标签详细信息
git show `tagName`
切换到标签内部,查看提交信息
git checkout `tagName`
git log --oneline
推送标签到远程
推送全部标签
git push [远程库别名] --tags
推送指定标签
git push [远程库别名] [tag] `tagName`
删除标签
删除本地标签
git tag -d `tagName`
删除远程标签
git push [远程库别名] :refs/tags/`tagName`
11. patch补丁操作
介绍
patch是一个文本文件,他的内容类似于git diff,但是他除了包含代码信息之外,还包含提交的元数据信息,如提交人,提交时间,注释等
一般在打了一个tag版本之后,如果有重大bug或者部分代码更新,但是又没有新的tag发布计划,可以打补丁,以安装补丁的方式进行部分代码更新,而不必要等最新的tag发布
流程
用户A开发了项目,打了tag,发行了该tag
用户B下载了该tag,已经开始使用,但是发现了bug
这个时候,用户A针对这些bug进行了修复,但是不准备重新打tag,所以打了一些补丁
用户B需要将这些补丁下载下载,进行安装,这样就会有部分代码更新,解决所急需要的功能或者bug修复
打补丁
使用git format-patch进行打补丁操作
当前分支所有超出master分支的提交
git format-patch -M master
某次提交之后的所有提交(不包含当次提交)
git format-patch `分支的commitId`
从根到指定提交的所有的提交(包含当次提交)
git format-patch --root `分支的commitId`
某两次提交之间的所有提交(不包含头,包含尾)
git format-patch `开始的commitId`..`结束的commitId`
某次提交之前的n次提交(包含当次提交)
git format-patch –`个数` `结束的commitId`
某次提交(单个)
git format-patch -1 `要打的commitId`
补充
一个patch文件代表了一次提交
补丁文件名默认从1开始,并拼接提交对应的第一行作为文件名,注意,只取英文字母,中文忽略
可以使用参数`--numbered-files`选项,则文件名只有编号,不包含提交信息
可指定`-o <dir>`指定patch的存放目录
应用补丁
检查patch文件
git apply --stat [文件列表]
检查能否应用成功
git apply --check `文件列表`
安装补丁
git am --signoff < `文件列表`
1. 版本控制系统
介绍
记录一个或者若干个文件内容变化,以便于查阅特定版本修订情况的系统
好处
对文件历史版本进行控制,可以方便的管理,回退,恢复
多人协同开发,代码同步
如果项目出现问题,可以对文件历史版本进行对比,根据历史差异找出问题出现的地方,谁导致的,谁提交的,什么时间提交的
重要版本tag标记,对重要版本进行管理
分类
集中化版本控制系统(SVN)
只有一台服务器,存储的是最新版本和上一个版本的差异。
问题:单节点故障,只有联网才能工作
分布式版本控制系统(Git)
每一台客户端都是服务器。存储的是最新的版本和历史版本的索引,每一个客户端都存有整个仓库镜像,通过极致的压缩和解压缩算法保证
2. 发展历史
Linux之父,林纳斯 托瓦斯编写处Linux
项目大了,开源支持人多了,需要版本控制工具支持
刚开始用的是BitKeeper(闭源,但是给Linux免费用),但是Linux社区的大佬都是开源精神,所以喜欢翻看代码。因为Bitkeep是闭源的,所以终止了合作
Linux之父用了一周写了一个Git,并且在一个月之内,吧Linux源码通过Git管理起来,并且开源
3. 安装
windows:下载安装包一步一步安装
linx:使用npm或者apt-get安装,或者离线包编译安装
4. Git设置签名
设置用户名
git config --global user.name "HLH"
设置邮箱
git config --global user.email "17703595860@163.com"
查看全局配置
git config --global --list
5. GIt本地结构
工作区:代码编辑区域
暂存区:暂存修改
本地库:本地仓库
6. Git使用场景
团队间合作
使用一个仓库
项目经理初始化本地库,创建远程库,推送初始更改
给项目组开发人员分配权限
项目组开发人员克隆仓库,进行代码拉取,更改,提交,推送
项目经理拉取最新代码,查看项目进度和代码评审
跨团队合作
多个库,通过fork复制,发送pull Request合并
本团队项目经理初始化本地库,创建远程库,推送初始更改
给本团队开发人员开放权限
对仓库进行fork复制,复制的仓库给合作团队使用
合作团队负责人管理仓库,添加仓库开发成员
两个团队的开发人员可以各自修改,提交,维护自己的远程库
如果需要合并,可以发送pullRequest进行代码合并
7. 常用命令
初始化
git init
添加
git add [文件/目录/.]
提交
git commit [文件/目录] -m "注释"
查看文件状态
git status
查看日志
git log
带分页效果,显示最长的唯一标识
b:上一页
空格:下一页
q:退出
git log --pretty-oneline
不带分页效果,一行显示,显示最长的版本号
git log --oneline
不带分页,一行显示,显示7位版本号
git reflog
在 git log --oneline的基础上添加了HEAD@{数字},代表回退到当前步骤所走的部数,并且显示pull,回滚之类的日志
回滚
git reset [操作符] 版本号
--hard
工作区和暂存区都不保留代码
--mixed
工作区保留代码
--soft
工作区和暂存区都保留代码
删除文件之后的恢复
恢复就是重置到当前最新提交,使用HEAD指针即可
git reset --hard HEAD
文件比对
工作区和暂存区代码对比
git diff [文件名]
暂存区和本地库代码对比
git diff [本地仓库版本号] 文件名
0 条评论
下一页