🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] # Git ## .git 目录是干什么用的? 每个本地的仓库中都会有一个 .git 目录,目录中保存了 git 仓库管理的相关信息。 ## git常用指令? git init :将所在目录初始化为 git 仓库(创建 .git 目录) git clone :从 git 服务器克隆仓库代码到本地 git add :将工作区中的代码添加到暂存区 git commit :将暂存区中的代码提交到本地仓库成为一个历史版本 git push:将本地仓库提交到服务器,以便和其他人共享代码 git merge:合并分支 git branch:操作分支 git checkout:切换分支 git remote -v:查看本地仓库对应的服务器仓库的地址 等等 ## fork?pull request 干什么用的? ![](https://img.kancloud.cn/8a/d6/8ad668553338262af00f963cb5fac6ab_2860x566.png) 我们可以浏览服务器上别人的开源仓库的代码,但不能修改,如果想要修改,我们需要先 fork 一份到自己的仓库中,然后修改之后再向对方发送 pull request 请求,当对方同意了,就会将我们修改的合并到对方的仓库中 fork:在服务器上将别人的仓库复制到自己的仓库中成为自己的,因为别人服务器上的代码我们只能下载无法修改,所以如果要修改我们需要复制一份成为我们自己的仓库,然后就可以下载我们自己的到本地然后修改。 pull request:我们自己的仓库修改了之后,如果要提交给原服务器上的仓库,我们需要发送一个 pull request 请求,当对方同意了之后,就会把我们服务器上修改了的代码合并到他的仓库中。 ## 什么是冲突?如何解决冲突? 当多个人修改了同一个文件中的同一行代码时,这时在提交到服务器上进行合并时就会发生冲突(服务器不允许这种合并,因为会发生互相覆盖的问题)。 解决冲突: 1. 先和对方程序员进行沟通,确定合并之后应该是什么样 2. 删除多余的代码,保留合并之后的最终代码 3. 执行 git resolve 并提交最终代码 ## git flow 是什么?主要由几个分支组成? git flow(git 工作流) 如果项目成员胡乱的提交代码,肯定不利于代码的管理和维护,所以我们需要一个规范来让团队成员 “按规矩提交代码”,这样便于 git 上代码的管理。 Vincent Driessen 提出了一种 git 的管理方式: ![](https://img.kancloud.cn/28/5c/285c68d8f2ad2a12f6ecb821605f769e_1320x802.png) 在 git 仓库中创建以下分支用来管理代码: master :生产环境分支,这个分支中的代码就是当前线上正在跑的代码。 develop:开发分支,这个分支上的代码就是当前正在开发的代码 feature:特性分支,每当要开发一个新功能时就创建一个特性分支,然后在这个特性分支上开发新功能,功能开发完之后,合并回 develop 分支 hotfix:修改分支,当线上的程序发现 BUG 时,就创建一个 hotfix 分支,然后在这个分支上修改 BUG ,BUG 修改好之后合并到 master 和 develop 分支 release:发布分支,每当要发布新的版本时就新建一个 release 分支,然后发布这个分支的代码,测试通过没有问题之后,合并到 master 和 develop 分支上 ## 工作区?暂存区?本地仓库?服务器? 服务器:一个公共的电脑搭的服务器(github、gitee、gitlab等),把本地仓库提交到服务器上就可以和其他人共享仓库代码了。 本地仓库(每人电脑上的仓库):本地 git 仓库中分为三个区域:工作区、暂存区、本地仓库。 工作区:我们当前代码所在的目录,在这里编辑代码。 暂存区和本地仓库是不可见的,保存在 .git 目录中。 暂存区:临时保存代码修改的地方。 仓库:已经确定的修改版本,代码必须先放到暂存区才能到仓库。 将代码提交到本地仓库的流程: 工作区 --- git add . --> 暂存区 -- git commit -m '注释' --> 本地仓库 本地代码提交到服务器的流程: 本地仓库 --- git push --> 提交到服务器 ## gitee、github、Gogs、gitlab 是干什么用的? 都是 git 的服务器。 公开的代码托管平台: github :国外的免费的 git 服务器代码托管平台。 gitee:国内的git 服务器代码托管平台。 私搭的公司内部代码托管平台:有些不想把公司内部的代码公开,又不想在平台上花钱,所以就自己在公司内部搭建一个自己用的平台: Gitlab:一个功能强大的代码托管服务器软件 Gogs:一个精简的 git 代码托管服务器软件