因为要上高级宏替换和类模板设计收发协议框架这节课的前置得学git架构,先来学一下git架构
在git bash的几个指令
git init对文件进行初始化,git status对文件进行状态检测,git add 文件名 表示的是对某一文件夹进行控制,其他文件先不控制。(被控制的文件会呈现绿色,未被控制呈现红色),如果想把所有的文件都管理起来,则是git add.。因为是版本控制器最后肯定要生成一个版本,生成版本的写法是git commit -m'版本名'(这个时候如果第一次使用git可能会出现这样的问题,需要你输入邮箱还有名字,具体方法在这(18条消息) git Please tell me who you are解决方法_第25点的博客-优快云博客)
然后检测所有的版本命令是 git log。 上面该有空格的不要少
还有一个回滚的操作 git reset --hard 版本号这样就能实现回滚到之前的版本
git reflog可以显示所有版本,不管回滚不回滚,然后再配合git reset --hard来用
cat 文件名 查 看文件里面内容
vim 查看并修改文件里内容
git pull origin q1 =git fetch origin q1 +git merge origin/dev
记录图片展示 git log--graph--pretty=format:"%h%s"
mkdir 文件名 用来创建文件夹
cddir 文件名 进入文件夹
git checkout -b 分支名 表示创建并切换到新的分支上
git branch -d 分支名 表示删除分支
git tag -a v1 -m' 第一版',上传版本: git push origin --tag
git ignore 使git不再管理某些文件(当然这边更多操作github上面有写),这个功能还是挺重要的
git分成了三大区
工作区:工作区分成两个部分,已管的和新创建的/修改的,已管的会进行自动转化成新创建/
修改的
缓存区:工作区的东西通过git add .的操作缓存到缓存区
版本库:版本库里放着一个个的版本,是缓存区的东西通过git commit 添加到版本库
---------
分支
版本与版本间是通过指针来进行联系的,第二个版本指向第一个版本,后面还可以通过添加指针来使一个新的版本添加到原有树枝基础上。
主路径叫做master,有了分支以后,更方便进行模块的修改而不影响主干。创建分支就git branch 名称 git branch 用来检测有几个分支,然后就是修改分支不影响主干。
git merge 分支名将一个分支合并到另一个分支,要这样合并分支得先切换到要合并的分支上然后将被合并的合并过来
git branch -d 分支名称
上传代码
和远程厂库创立联系,git remote origin 向远程厂库起别名
上传代码 git push origin 分支
git push -u origin 分支(这里可以上传master也可以上传其他分支),这里的u也可以省略,有u是为了表示默认的地址
接收代码
将github上的git内容拷贝到当前文件夹里,克隆远程厂库 git clone 远程厂库地址
(当克隆过来代码时,master以及分支也会跟着clone过来)
--------------
两地开发的流程基本是这样的
A
1在公司开发切换到q1上来git checkout q1
2更新一下 git merge main(只需要写一次)
3.修改代码
4.生成版本,提交代码
B
1.切换到q1分支上进行开发
2.拉代码 git pull origin
3.继续开发
4.生成版本,提交代码
当两地上传git发生冲突时,需要手动进行修改。然后再上传
---
有的时候版本过多导致回滚复杂,这个时候就出现了合并版本的功能。git rebase HEAD~2
,这表示的意思就是从当前版本开始最近的两个版本合并到一起的意思。然后弹出下面这个界面,把除了第一条语句的‘pick’改成‘s’,然后在最下面输入“:wq“保存之后,基本就行了。(当然做合并的话最好做那些没被上传到厂库的分支)
下面要用到rebase的第二个用法,就是将某一段的commit复制粘贴到另一段上。也就是变基
将一段分支上的内容合并到master上,可以用之前直接merge的方法,也可以通过使用rebase的方法。1.切换到branch 上然后git rebase master 2.然后切换回主线然后继续进行开发生成版本后3.git merge branch
rebase在合并的时候也会出现冲突的情况,这种情况也是得手动进行修改
发生冲突使用vim进入里面去修改内容,把该删的删掉的,就可以接着git add.,git rebase--continue了
---
git flow 多人开发流程
通常每个人都自己负责一个流程,负责一块。有一套完整的工作流程
1.在邀请合作可以在设置里去添加合作人
当然真正的多人开发是创建一个组织,创建组织里面可以放厂库。
打上标签,也是为了方便记录版本,写法差不多是这样 git tag -a v1 -m' 第一版'
多人协作开发的时候,在哪个分支上继续创建了分支,这个分支就是属于它上一级这个直属分支分支出来的。
代码的review,小弟向上级提出代码合并的请求和,上级来进行review,通过后就进行合并,还可以删除小弟的这条分支。
--------------
当然也可以为其他厂库做贡献,先fork到自己的厂库,然后在clone到自己的本地修改上传,然后拉取请求就可以了。