1. Git安装与常用命令
1.1 Git环境配置
1.1.1 下载与安装
阿里镜像下载:https://registry.npmmirror.com/binary.html?path=git-for-windows/
rc0、rc1都是预发布的候选版本,版本选择windows可执行的文件安装;
安装完成在电脑桌面点击右键,如果能够看到如下两个菜单说明安装成功
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
1.1.2 基本配置
安装Git后首先需要设置用户名称和email地址,因为每次提交都会使用该用户信息
- 打开Git Bash
- 设置用户信息
git config --global user.name “startljc”
git config --global user.email “xxxxxx@qq.com”
查看配置信息
git config --global user.name
git config --global user.email
1.1.3 为常用指令配置别名
常用的指令参数非常多,每次都要输入好多参数,可以使用别名
- 打开电脑用户目录,创建
.bashrc
文件 - 在
.bashrc
文件中输入如下内容:
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'`
#用于输出当前目录所有文件及其基本信息
alias ll='ls -al'
- 打开Git Bash,执行
source ~/.bashrc
1.2 获取本地仓库
- 在电脑的任意位置创建一 一个空目录(例如test )作为我们的本地Git仓库
- 进入这个目录中,点击右键打开Git bash窗口
- 执行命令
git init
- 如果创建成功后可在文件来下看到隐藏的.git目录
1.3 基础操作命令
- 查看修改的状态(status)
- 作用:查看修改的状态(暂存区,工作区)
- 命令形式:
git status
- 添加工作区到暂存区(add)
- 作用:添加工作区一个或多个文件的修改到暂存区
- 命令形式:
git add 单个文件名|通配符
- 将所有修改加入暂存区:
git add .
- 将所有修改加入暂存区:
- 提交暂存区到本地仓库(commit)
- 作用:提交暂存区内容到本地仓库的当前分支
- 命令形式:
git commit -m '注释内容'
- 查看提交日志(log)
- 作用:查看提交记录
- 命令形式:
git log [option]
- options
- –all 显示所有分支
- –pretty=oneline 将提交信息显示为一行
- –abbrev-commit 使得输出的commitld更简短
- –graph 以图的形式显示
- options
- 版本回退(reset)
- 作用:版本切换
- 命令形式:
git reset --hard commitID
- commitID可以使用
git-log
或git log
指令查看
- commitID可以使用
1.4 分支
使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
-
查看本地分支
- 命令:
git branch
- 命令:
-
创建本地分支
- 命令:
git branch 分支名
- 命令:
-
切换分支(checkout)
- 命令:
git checkout 分支名
- 直接切换到一一个不存在的分支(创建并切换)
- 命令:
git checkout -b 分支名
- 命令:
- 命令:
-
合并分支(merge)
一个分支上的提交可以合并到另一个分支- 命令:
git merge 分支名称
- 命令:
-
删除分支
不能删除当前分支,只能删除其他分支- git branch -d b1删除分支时,需要做各种检查
- git branch -D b1不做任何检查,强制删除
-
解决冲突
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,需要手动解决冲突
步骤如下:- 处理文件中冲突的地方
- 将解决完冲突的文件加入暂存区(add)
- 提交到仓库(commit)
-
开发中分支使用原则与流程
- master(生产)分支
- 线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;
- develop(开发)分支
- 从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。
- feature/xxxx分支
- 从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支, 分支上的研发任务完成后合并到develop分支。
- hotfix/xxxx分支
- 从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、develop分支。
- 其他分支,如test分支(用于代码测试)、pre分支(预上线分支)等。
- master(生产)分支
2. Git远程仓库
2.1 创建远程仓库
注册码云,创建gitee仓库
2.2 配置SSH公钥
- 生成SSH公钥
- ssh-keygen -t rsa
- 不断回车
- 如果公钥已经存在,则自动覆盖
- Gitee设置账户共公钥
- 获取公钥
- cat ~/.ssh/id_rsa.pub
- 获取公钥
- 验证是否配置成功
- ssh -T git@gitee.com
2.3 操作远程仓库
2.3.1 添加远程仓库
先初始化本地库,然后与已创建的远程库进行对接。
- 命令: git remote add <远端名称> <仓库路径>
- 远端名称,默认是origin,取决于远端服务器设置
- 仓库路径,从远端服务器获取此URL
- 例如:
git remote add origin git@gitee.com:superljc/springboot-headline-part.git
2.3.2 查看远程仓库
- 命令:
git remote
2.3.3 推送到远程仓库
- 命令: git push [-f] [–set-upstream] [远端名称[本地分支名][:远端分支名]]
- 如果远程分支名和本地分支名称相同,则可以只写本地分支
- git push origin master
- -f 表示强制覆盖
- –set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。
- git push --set-upstream origin master
- 如果当前分支已经和远端分支关联,则可以省略分支名和远端名。
- git push将master分支推送到已关联的远端分支。
- 如果远程分支名和本地分支名称相同,则可以只写本地分支
2.3.4 本地分支与远程分支的关联关系
- 命令:git branch -vv
2.3.5 从远程仓库克隆
如果已经有一个远端仓库,可以直接clone到本地。
- 命令: git clone<仓库路径> [本地目录]
- 本地目录可以省略,会自动生成一个目录
2.3.6 从远程仓库抓取和拉取
远程分支和本地的分支一样,可以进行merge操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
- 抓取命令: git fetch [remote name] [branch name]
- 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
- 如果不指定远端名称和分支名,则抓取所有分支
- 拉取命令: git pull [remote name] [branch name]
- 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge
- 如果不指定远端名称和分支名,则抓取所有并更新当前分支
2.3.7 解决合并冲突
在一段时间,A、B用户修改了同一一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需要推送到远程仓库,此时B用户晚于A用户,故需要先拉取远程仓库的提交,经过合并后才能推送到远端分支。
远程分支也是分支,所以合并时冲突的解决方式也和解决本地分支冲突相同相同
3. 在IDEA中使用Git
3.1 在IDEA中配置Git
安装好Intellij IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。选择File- →Settings打开设置窗口 ,找到Version Control下的git选项:
点击Test按钮,现在执行成功,配置完成
3.2 在IDEA中操作Git
3.2.1 创建项目远程仓库
创建远程gitee仓库
3.2.2 初始化本地仓库
3.2.3 设置远程仓库
3.2.4 提交本地仓库
3.2.4 推送到远程仓库
3.2.5 克隆远程仓库到本地
3.2.6 创建分支
常规方式
最强大的方式
3.2.7 切换分支及其他分支相关操作
3.2.8 解决冲突
- 执行merge或pull操作时,可能发生冲突
- 手动解决冲突后加入暂存区
- 提交到本地仓库
- 推送到远程仓库
4. 注意
注意:
- 切换分支前先提交本地的修改
- 代码及时提交, 提交过了就不会丢
- 遇到任何问题都不要删除文件目录