一、常规流程
考虑到 GitHub 初始化项目时可能会选择生成 Readme.md ,所以可以这样:
注意:现在 GitHub 仓库默认分支已经切换为 main
以前初始化的流程
// 初始化本地 git 仓库
git init
// 关联远程仓库
git remote add origin git@github:Xxx/Xxx.git
// 拉取远程仓库 指定分支代码 和本地 git 分支合并
git pull origin master:master
// 将本地新的文件添加到 git 仓库
git add .
// 提交到本地仓库
git commit -m "message"
// 推送到远程仓库指定分支
git push -u origin master
二、Git 基础知识
了解 Git 项目的三个部分
- Git 目录
- 工作目录(或工作树)
- 暂存区
Git 目录(位于 YOUR-PROJECT-PATH/.git/
中)是 Git 存储准确跟踪项目所需的所有内容的位置。这些内容包括元数据和一个对象数据库,其中包含项目文件的压缩版本。
工作目录是用户在本地对项目进行更改的地方。工作目录从 Git 目录的对象数据库中提取项目的文件,并将其放置在用户的本地计算机上。
暂存区 是一个文件,用于存储下一次 commit 内容的信息。“commit” 的意思是你告诉 Git 保存暂存区的更改。 Git 照原样拍摄文件快照,并将该快照永久存储在 Git 目录中。
在三个部分中,文件可以在任何给定时间处于三种主要状态:提交,修改或暂存。在工作目录中对文件进行修改,然后,将其移至暂存区进行暂存,最后,commit 提交文件。
三、从 master 分支迁移到 main 分支
由于现在 GitHub 默认分支变为 main
,但是本机的 git 程序初始化项目时,默认分支依旧是 master
分支,这时候推送代码会出现错误,所以采取以下方式:
// 初始化
git init
// 关联远程仓库
git remote add origin git@github:Xxx/Xxx.git
// 拉取远程仓库
git pull origin main:master
// 创建并切换到 main 分支
git checkout -b main
// 将本地新的文件添加到 git 仓库
git add .
// 提交到本地仓库
git commit -m "message"
// 推送 main
git push origin main
// 删除本地 master 分支
git branch -d master
// 如果远程有 master 分支,则删除 master 分支
git push origin :master
// 迁移成功
四、遇到的错误及解决方法
1、一次性 push 的文件太大
解决方法(一):
# 设置 git config 的 postBuffer 的大小 (设置为 500MB)
git config --local http.postBuffer 524288000
# 注:--local选项指定这个设置只对当前仓库生效。
解决方法(二):
- 一次 add 几个文件夹,然后提价,最后 push
- 多分几次 push 就好了
2、一次 add 的文件太多,不能一次性 commit
解决方法:
撤销 add 的所有文件
git reset HEAD
3、关于分工合作的处理流程
分工开发的时候,所有人都应该开启一条单独的分支进行开发,最后将自己的分支合并到主分支上面,push 到远程仓库。
这里有一些注意点:
- 从分支中创建了一些新文件并 add 后,主分支也会出现这个文件
- 从分支 commit 新文件后,git 的本地分支才会开启一条新的分支,这个文件在主分支中就看不到了(一开始看到从分支创建新文件后,主分支也出现了这个文件还虚惊一场)
- 这样在 idea 的 version control 控制台的 log 下就主分支就出现了分叉
- 从分支 commit 后切换到主分支,首先 pull 一下,看有没有更新,然后再将从分支合并到主分支中
- 这样分支就回归到主分支中
4、关于不想上传到 git 服务器的文件
一开始使用 gitee 比较智能,上传过去就会自动忽略 .idea
、*.iml
、target
等等文件。
换成了搭建的 git 服务器后,一开始初始化项目没有编写完整的 .gitignore
文件,所以将一些本地 idea 配置也一并上传了,后来造成了一些问题。
解决思路:
1、idea 忽略不想看到的文件
setting -> editor -> file types -> ignore file
后面加上 .idea;*.iml;
,这样项目工程目录下就看不到这些文件了。
2、安装 .ignore
插件
这个插件挺好的,在我们创建 .gitignore 文件时可以智能的提示
简介:
.ignore是IDEA的一款专用忽略文件的插件。其支持的忽略文件类型有:.gitignore (Git), .hgignore (Mercurial), .npmignore (NPM), .dockerignore (Docker), .chefignore (Chef), .cvsignore (CVS), .bzrignore (Bazaar), .boringignore (Darcs), .mtn-ignore (Monotone), ignore-glob (Fossil), .jshintignore (JSHint), .tfignore (Team Foundation), .p4ignore (Perforce), .prettierignore (Prettier), .flooignore (Floobits), .eslintignore (ESLint), .cfignore (Cloud Foundry), .jpmignore (Jetpack), .stylelintignore (StyleLint), .stylintignore (Stylint), .swagger-codegen-ignore (Swagger Codegen), .helmignore (Kubernetes Helm), .upignore (Up), .prettierignore (Prettier), .ebignore (ElasticBeanstalk)
五、Idea 中管理 gitee 仓库协同开发
1、初始化项目
项目组长在本地创建项目将其分享到 gitee 远端并生成仓库,然后邀请开发成员进入项目组。
各个组员在版本控制 VCS
中点击 Get From Version Control,选择要克隆的远程仓库,将仓库拉取到本地。
2、分支管理(重要)
分支有两种实现方式:
组长创建分支,小组成员在 idea 中使用组长为每个人创建的分支
小组成员自由创建分支,详情见后面
(1)组长为组员创建分支
在 gitee 的仓库中创建不同分支并分配给组员
idea 中刷新分支信息:点击 Git 的 pull 功能,点击 Remote 右边的刷新按钮,然后 pull 就可以显示最新的分支信息了。
idea 右下角下面可以显示远程仓库的分支信息:
New Branch
:新建分支Local Branches
:默认主分支Remote Branches
:项目分支列表
作为组长,仓库权限最大,组长上传可以选择默认的主分支,也可以选择新建一个分支,上传后再合并。
当代码写完后,选中新增的文件、修改的代码文件,点击 idea 右下角的分支信息。
- 选中自己的分支,点击
check out
,表示将该分支设置为自己的主分支,如果点击分支只显示rename 和 push
两个选择,则表示你已经选中了该分支,不需要做任何操作 - 切换成自己的分支之后,可以编写代码进行 commit,idea 的 VCS 下面的 commit 功能集成了 git 命令行的 add、commit、push 命令,但是还是需要注意:
- master 分支直接 commit 会列出很多文件,建议全部提交
- 其他分支 commit 的时候建议只选择自己修改的或者新增的代码文件提交,未选中的一般都是 XML 格式文件,这是本地项目配置和修改记录的文件,可提交可不提交,最重要的还是列表里自己修改或新增的代码文件
合并分支
gitee 合并
合并方法1:
- 组长上传代码到 master 分支,master 是整个项目的核心,也是代码的全部,小组成员的代码提交到其他分支,组长需要把小组成员的代码合并到主分支上来
- 合并方法如下
- 进入项目仓库,选择
pull requests
- 点击新建 pull requests
- 选择刚刚提交了代码的分支,同时选择目标分支(一般是 master)
- 输入标题、说明
- 最后点击创建
- 创建完成后组长需要审核和测试,最终确认无误后合并到主分支
- 进入项目仓库,选择
- 组长选择合并分支的时候可能会出问题,顺利的话就是审核、测试通过后直接合并,不顺利的话,需要手动选择分支提交的代码,页面会有相应的返回数据,每个文件审查选择引入即可,引入选择结束后需要点击左侧文件后面的小圆圈,进行 add 操作,代码切换到顶部区域表示正确,全部完成后点击下面的提交,再继续 “审核通过” 这些操作。
- 项目合并后代码丢失的问题就出现在这个阶段,小组成员上传的代码包含大量 .xml 文件,不同之处太多,手动选择合并时 两者都接收 才算是合并代码,选择前面两个会引起代码丢失,所以,建议小组成员 commit 时只选择自己新增或者修改的相关文件,会减少很多麻烦
合并方法2:
注意:方法2 需要组长将项目的主分支(一般是 master)改为常规分支,而不能是保护分支或只读分支,这样组员才有权力 push 到 主分支。
- 成员在自己的分支提交代码后,切换到主分支
- 选中
local branches
下自己的分支,点击Merge into Current
,这个 Current 就是指项目的默认主分支 master - 最终分支代码会合并到主分支代码中,最后不要忘了将主分支 push 到远端
(2)组员自己创建分支
严禁小组成员提交代码到 master 分支,提交后会覆盖项目,所有人努力付之一炬,必须提交到分支,交给组长统一管理将代码合并到项目中
组员检查分支,在 idea 右下角点击 git 的标识,会出现两种情况:
- 如果组长有给你分配的分支,那么在刷新分支信息(见初始化项目部分)后,
Remote Branches
会显示你的分支,点击该分支,点击 checkout(就是检查并选择此分支),提示成功后,再点击该分支,出现的选项就只有 rename 和 push 两个。 - 如果组长没有给组员分配分支,那么该组员就需要自己新建一个,点击 New Branch,输入自定义的分支名,点击确认,建议使用英文并具有辨识度
- 创建新分支后,默认选择该分支
- 如果组长有给你分配的分支,那么在刷新分支信息(见初始化项目部分)后,
创建新分支后,我们需要将新分支提交到远程仓库中:
在新分支中修改代码或者添加文件
将项目 add:
VCS -> Git -> Add
,add 操作完成右键项目
Git -> Commit Directory
,编辑提交信息,最后点击commit and push
,将新的分支提交到远端
提交后:
- 要么组长使用 pull request 功能合并提交的新分支
- 要么组长将 master 分支设置为常规分支,组员自己切换到主分支然后合并新分支并提交
3、将远端代码更新到本地
要么 pull
要么直接 VCS 下面的 Update Project
需要注意,小组成员分支提交的代码一定要及时合并,若没有及时合并,更新下去的代码会覆盖本地。