1.5. Tag
翻译为标签,每次程序测试发版后,打一个标签,表示一个版本,如:V1.0.0、V1.0.1等。
1.6. Issue
翻译为事务、议题,issue在项目中可以承担用户反馈的作用,用户可以在这个地方提出bug反馈与优化建议,也可以为开发者服务,用于记录待完成的任务。每个issue可以包含该问题的前因后果,对于不了解项目的人员,整理的好的issue列表也有助于把握项目的优化内容。一般来说,可以包含以下内容:
–软件的bug
–功能优化建议
–待完成的任务
1.7. Wiki
可翻译为维基百科,提供了在线的文档编辑功能,类似于博客,可以记录一些技术文档等。
1.8. Groups
可翻译为用户组,多个共同做项目的用户集合。Projects、Repository可以属于组织也可以属于用户。
1.9. Role
可翻译为角色。Git系统中包含5种角色,如下:
Guest:访客,可以创建issue、发表评论,不能读写版本库
Reporter:记录者,记者,可以克隆代码,不能提交,QA、PM可以赋予这个权限
Developer:开发者,可以克隆代码、开发、提交、push,RD可以赋予这个权限
Master:维护者,可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD(Research and Development engineer,研发工程师)负责人可以赋予这个权限
Owner:所有者,可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
1.10. Permissions
可翻译为权限。Git系统中包含3种角色,如下:
Private:只有组成员才能看到
Internal:只要登录的用户就能看到
Public:所有人都能看到
1.11. Watch
可翻译为关注、观察。将项目或仓库设置为watch后, 这个项目发生变动,如被别人提交了pull request、被别人发起了issue等等情况后,会发送消息至配置的邮箱中。
1.12. Star
可翻译为星星。可理解为项目点赞、收藏的意思。
1.13. Fork
可翻译为分流、分叉、复制。Fork后,系统会复制一份repository变成自己的仓库了。如,原工程是框架类型的工程,Fork为自己的repository,变成业务型的工程,添加业务代码,有些好的基础代码,也可以发起Pull Request,申请合并到框架类型的工程中。Fork前的仓库可以称做upstream,上游仓库。
1.14. Workspace
可翻译为工作区。即文件在硬盘上的实际存放区域,物理目录如下图:
1.15. Staged/Index
可翻译为缓存区。即实际上是包含文件索引的目录树,通过git add命令可以将Workspace中的文件添加至Index索引,并将实际文件放入objects文件夹下。
物理目录如下图:
1.16. Local Repository/Head
可翻译为本地仓库/本地版本库。和Index一样,也是包含文件索引的目录树,通过git commit命令可将代码从Index中提交到本地仓库(Head指的是当前操作的本地仓库分支,可以代表本地仓库)。
验证是否安装成功:cmd窗口输入git --version进行验证。
Git权限设置主要适用于仓库管理员和群组管理员。
3.1.1. 分支保护设置
仓库创建后,默认的主分支master只允许Maintainers可以merge和push,可以根据需要对不同分支设置对应的权限。
进入仓库,点击【Settings】【Repository】【Expand】按钮,下拉滚动条,可以看到branch列表,选择对应的角色授权即可。
3.1.2. 项目添加成员
进入仓库,点击【Settings】【Members】按钮,填写对应的成员和角色即可。
3.1.3. 设置仓库可见级别
进入仓库,点击【Settings】【General】按钮,选择对应的可见等级即可。
3.2. 新建标签
3.2.1. 进入仓库详情界面,点击【Tags】按钮
3.2.2. 点击【New tag】按钮
3.2.3. 填写相关表单内容,点击【Create tag】按钮
3.2.4. 在tag列表界面中,即可看到刚建的tag。
列表界面为第二步的地址。
3.3. 新建分支
3.3.1. 进入仓库详情界面,点击【Branch】按钮
3.3.3. 填写相关表单内容,点击【Create branch】按钮
3.3.4. 在branch列表界面中,即可看到刚建的tag。
列表界面为第二步的地址。
3.4. 发起pull request
3.5. 处理pull request
4.2. 设置姓名及邮箱
因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中。
–global选项会将配置写入到用户级配置文件中。
git config --global user.name “John Doe”
git config --global user.email “[email protected]”
5.1. 创建本地仓库
如果采用git clone的方式获取远程代码,则在clone的时候会自动创建本地仓库,不需要再创建本地仓库。
5.1.1. 创建空文件夹
5.1.2. 在文件夹中执行以下命令,本地仓库初始化:
git init
会看到,文件夹中多了一个名称为.git的文件夹,如下图
5.1.3. 创建README.md文件:
Windows系统可直接创建txt文件,修改后缀为.md即可。Linux系统可执行以下命令:
touch README.md
README.md文件不是必须的,但最好有,里面可能的内容如下(下图中的文件内容为通过gitee页面添加):
5.1.4. 将README.md文件添加至提交列表:
git add README.md
5.1.5. 提交README.md文件至本地仓库:
引号中的内容为提交注释
git commit -m “first commit”
5.1.6. 添加远程仓库地址:
origin就是一个名字,是远程仓库的一个别名,它是在你clone一个托管在Github上代码库时,git为你默认创建的指向这个远程代码库的标签, origin指向的是repository,master只是这个repository中默认创建的第一个branch。当你git push的时候因为origin和master都是默认创建的,所以可以这样省略。
git remote add origin https://gitee.com/loyuru/shangchuanceshi.git
git remote add 添加一个新的远程 Git 仓库
5.1.7. 将本地仓库中的文件push到远程仓库:
master为远程仓库的默认分支。
git push -u origin master(可以直接使用git push)
5.2. 查看文件状态
命令如下:
git status
执行结果如下图:
Changes to be committed是缓存区中待提交到本地仓库的文件。
Changes not staged for commit是工作区中需要添加到缓存区中的被修改的文件。
Untracked files是工作区新增的文件,尚未被添加至缓存区。
下图为文件状态变化逻辑图:
5.3. 分支命令操作
5.3.1. 本地创建分支
git branch dev
5.3.2. 把本地分支提交到远程仓库
git branch dev
5.3.3. 查看当前分支
git branch -a
5.3.4. 切换分支
切换前要保证所有内容都已经commit
git checkout -b <分支名称>
5.3.5. 切换分支
进行merge前需要使用git pull命令将需要合并的分支代码下载到本地仓库
git merge <分支名称>
5.4. 标签命令操作
tag标签因为是历史代码,实际上只是一个快照,不是独立的文件空间,所以不能改动,如果必须改动,则需要新建一个分支,将tag中的内容pull到分支里改动。
5.4.1. 查看本地标签
git tag
5.4.2. 检出指定标签代码
git checkout < 标签名 >
5.4.3. 返回当前代码
git checkout < 分支名>
5.5. 工作区与缓存区相关操作命令
5.5.1. 工作区代码添加至缓存区
当对工作区修改(或新增)的文件执行 “git add” 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
git add 文件名
5.5.2. 缓存区代码的回退
当执行 “git rm –cached ” 命令时,会直接从暂存区删除文件,工作区则不做出改变。
当执行 “git checkout .”(后面的.表示所有文件) 或者 “git checkout –- 文件名 ” 命令时,会用暂存区全部或指定的文件替换工作区的文件。
5.5.3. 比较工作区和暂存区的差别
执行 “git diff” 命令
5.5.4. 比较工作区和本地仓库的差别
执行 “git diff HEAD” 命令
5.5.5. 已跟踪的文件改名
执行以下命令 ,会将工作区和缓存区的文件都重命名
git mv file_from file_to
5.6. 缓存区与本地仓库相关操作命令
5.6.1. 缓存区代码提交至本地仓库
执行以下命令可将缓存区代码提交至本地仓库,提交注释不能省略,文件名不写表示提交全部。
git commit -m “提交注释” 文件名
5.6.2. 缓存区目录重置
当执行 “git reset HEAD 文件名” 命令时,暂存区的目录树会被重写,被本地仓库目录树所替换,但是工作区不受影响。
5.6.3. 比较缓存区与本地仓库的差别
执行 “git diff --cached” 命令
5.7. 远程仓库与本地仓库相关操作命令
5.7.1. 远程仓库克隆至本地仓库
新建空白文件夹,并执行以下命令可从远程仓库克隆默认分支代码至本地仓库,后面的url为远程仓库的url:
git clone https://gitee.com/loyuru/java-base-demo.git
执行以下命令可从远程仓库克隆指定分支代码至本地仓库。
git clone -b dev https://gitee.com/loyuru/shangchuanceshi.git
5.7.2. 查看远程仓库地址
在本地仓库文件夹中,即有.git文件夹的目录中执行以下命令,可以查看远程仓库地址:
git remote -v
执行结果如下图:
执行以下命令可以查看远程仓库的详细信息:
语法:git remote show
示例:git remote show origin
5.7.3. 查看远程仓库分支
执行以下命令,可以查看远程仓库的分支列表
git branch -a
执行结果图如下:
远程仓库在界面上的分支如图:
5.7.4. Push本地仓库代码至远程仓库
语法:git push
示例:git push origin master
5.7.5. Pull远程仓库代码至本地仓库
git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。
5.7.6. Fetch远程仓库代码至本地仓库
git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令只会将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
语法:git fetch
示例:git fetch origin
融合:git merge origin/master
5.7.7. 远程仓库的重命名与移除
重命名:
语法:git remote rename
示例:git remote rename pb paul
移除:
语法:git remote remove
示例:git remote remove paul
5.8. Fork前上游仓库与fork后个人远程仓库相关操作命令
5.8.1. 拉取上游仓库最新代码
fork后,如果上游仓库有更新,可以通过以下方式进行代码更新。
(1)设置源仓库的远程地址
语法:git remote add [新地址名称] [源仓库远程地址]
示例:git remote add upstream http://test
(2)同步fork
语法:git fetch [新地址名称]
示例:git fetch upstream
(3)本地切换到想要更新的分支上
语法:git checkout [branch]
示例:git checkout master
(4)把源仓库的远程分支合并到本地
语法:git merge [新地址名称/分支]
示例:git merge upstream/master
(5)更新到自己的远程库上
git push origin master
5.8.2. 向上游仓库发起拉取请求
拉取请求的作用是请求您的上游项目将您个人远程仓库中的更改拖入其树中。start表示从上游项目的哪个版本(或commit)开始fork的,url指的你的仓库url,end表示要pull到你的仓库的哪个版本(或commit)。
语法:git request-pull []
示例:git request-pull v1.0 https://git.ko.xz/project master
示例说明:这会向上游产生一个请求,总结v1.0版本后你在master分支做的变化,从而将它从你的公共存储库中提取出来merge到你上游仓库中。
6.1.2. 选择对应的目录,点击【OK】
一般选择工作空间,即工程的上级目录
6.2. 添加远程仓库地址
6.2.1. 点击【VCS】【Git】【Remotes】打开远程仓库列表
6.2.2. 点击加号按钮,输入远程仓库URL并点击【OK】按钮。
6.2.3. 界面提示输入用户名,密码,输入之后,点击【Log In】按钮。
6.3. 导入代码
可以使用git clone命令将代码下载至本地仓库,然后通过普通导入maven工程的方式导入到idea中,也可以使用以下界面操作。
6.3.1. 在idea中选择git安装的位置
如下图所示:
右击file–>Setting–>,会打开Setting对话框,如下图:
6.3.2. 选择git方式导入项目
从idea的引导页面或idea中CVS下拉菜单中选择Git方式导入
6.3.3. 选择git路径及本地路径,点击【Clone】按钮
6.3.4. 下载完成后,点击【yes】创建idea工程
6.3.6. 继续点击【Next】
6.3.7. 选择Search for projects recursively并点击【Next】
6.3.8. 选择需要导入的项目并点击【Next】
6.3.11. 工程导入成功,若有报错等,可以在右侧maven窗口手动添加、更新maven工程
6.4. 更新代码
6.4.1. 选择需要更新的工程目录,右键点击【Git】【Repository】【Pull】
6.5. 新增代码的上传
6.5.1. 新增的代码类名会显示为红色,如下图
6.5.2. 右击需要上传的代码,选择【Git】【Add】
6.5.3. 代码名称会变为绿色,如图:
6.5.4. 点击右上角Git后面的对号,或选择【VCS】【Commit】打开提交列表
6.5.5. 填写Commit Message并点击【Commit】按钮后,代码提交至本地仓库
6.5.6. 选择【VCS】【Git】【Push】打开push窗口
6.5.7. 选择需要push到远程仓库的代码,然后点击【Push】后,代码成功提交到远程仓库。
PS:如果是第一次提交,需要填写远程仓库的用户名和密码。下图为远程仓库中看到的自己提交的代码。
6.6. 修改代码的上传
点击右上角Git后面的对号,或选择【VCS】【Commit】打开提交列表,可以看到需要提交的代码,后续步骤同【新增代码的上传】章节中的4-7步。
6.7. 删除代码的上传
删除代码后,按照新增修改的方式,进行commit、push即可。
6.8. 文件重命名的上传
重命名后,按照新增修改的方式,进行commit、push即可。
6.9. 冲突文件的push
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200902234957218.png#pic_center
如果,需要push到远程仓库的代码文件被别人修改过,则需要进行merge处理。Idea会自动弹出merge框。如下图
6.9.1. 点击【Merge】按钮,弹出冲突文件选择框,如下。
6.9.2. 点击【Merge】按钮,弹出文件对比框,如下。
通过调整箭头和叉号,进行merge处理,并apply后,代码提交成功。
6.10. Push权限提示
如果push时出现如下提示,可联系gitlab管理员添加push权限。
6.11. 查看历史记录
选中文件,依次选择【VCS】【Local History】【Show History】可以查看本地缓存仓库的历史列表,如图:
可以使用git clone命令将代码下载至本地仓库,然后通过普通导入maven工程的方式导入到idea中,也可以通过下面界面操作导入。
7.1.1. 选择【Import projects】【Git】【Projects from Git】点击【next】
7.1.2. 选择【Clone URI】,点击【next】
7.1.4. 填写远程仓库地址、用户名、密码等,点击next
7.1.6. 选择本地仓库地址,点击next
7.1.7. 选择工程导入方式,Import as general project,点击next
7.1.9. 完成后,删掉工程,重新导入为maven工程即可
7.2. 新建工程及仓库的创建
7.2.1. 新建maven工程
7.2.2. 右键工程,选择【Team】【Share Project】
7.2.3. 选择Use or create repository in parent folder of project
7.2.4. 选择工程后,点击Create Repository
7.2.5. 点击finish,本地仓库创建完成
7.2.6. 点击【Team】【Add to index】将工程加入到缓存区提交列表
7.2.7. 打开Git Staging窗口
通过WindowShow ViewOtherGit打开Git Staging窗口,打开后点击Commit and Push按钮。
7.2.8. 填写远程路径,一直点击next
7.2.9. 执行结果查看
执行结果中如果有红色提示,则表示push不成功,push前需要先执行pull操作,保持与远程仓库的代码一致。
7.2.10. 也可以通过Git Repositories进行仓库创建、克隆
通过WindowShow ViewOtherGit打开Git Repositories窗口。
7.3. 新增代码的上传
7.3.1. 添加至index
可右键新增的代码,选择【Team】【Add to index】将新增代码添加至缓存区提交列表
也可以在Git Staging窗口,右键文件选择Add to index将文件添加至缓存区提交列表
7.3.2. Commit至本地仓库
可右键代码选择【Team】【Commit】
7.3.3. Push至远程仓库
可右键代码选择【Team】【Push to Upstream】
点击Configure
点击Save an Push
返回界面如果没有红色提示,则表示上传成功
7.4. 修改、删除、重命名代码的上传
在本地修改后,后续的处理过程同新增代码。