Git是一个免费开源分布式版本控制工具,是由Linux的作者Linus开发的第二个伟大作品。2005年由于BitKeeper软件公司对Linux社区停止了免费使用权。Linus迫不得己自己开发了一个分布式版本控制工具,从而Git诞生了
目前使用Git作为版本控制的开源软件:Linux kernel,Android,jQuery,Ruby on Rails,github,码云Gitee等
Git官网可以下载:https://git-scm.com/
1.Git安装
1.1Git服务器的安装
2.Git命令操作
2.1Git交互流程图
- Clone:克隆,从共享仓库/中央仓库将代码拷贝一份下来
- Commit:提交,提交的本地仓库
- PUSH:推送,将本地仓库代码推送到远程中央仓库
- PULL:拉取,从远程仓库下载最新的代码
- Git是先提交到本地仓库,然后再推送
2.2 工作区&暂存区
2.3Git命令操作
桌面新建三个文件夹:
模拟两个开发人员本地仓库:gittest/user1 和 gittest/user2
模拟项目经理远程仓库master:gittest
==============仓库管理员或项目经理操作========================
第一步: 创建仓库,进入gittest目录 - 右键Git Bash here
git init --bare pethome
-- pethome仓库名称可以改【--bare 是参数不用管】
==============开发人员1操作=============================
第二步:克隆,进入usr1目录 - 右键Git Bash here
git clone ../pethome -- 相对路径的写法【使用TAB自动补全】
第三步:设置个人信息【用户名和邮箱】
cd pethome
git config user.name "user1"
git config user.email "user1@163.com"
第四步:新建一个文件并写入数据
echo "User1 add content" > index.jsp
-- 会自动创建文件,并将User1 add content字符串写入index.jsp【>>追加写】
第五步:添加并提交文件 -- 提交到本地仓库
git add index.jsp -- 添加到暂存区
git commit -m "User1 add the file"
第六步:把自己的仓库提交到公共服务器
git push origin master
==============开发人员2操作=============================
第七步:克隆,进入usr2目录 - 右键Git Bash here
git clone ../pethome -- 相对路径的写法【使用TAB自动补全】
第八步:设置个人信息【如果不这是在提交的时候会出问题】
cd pethome
git config user.name "user2"
git config user.email "user2@163.com"
第九步:编写代码:>表示覆盖写,>>表示追加写
echo "User2 add content" >> index.jsp
第十步:添加并提交文件 -- 提交到本地仓库
git add index.jsp -- 添加到暂存区
git commit -m "User2 add the file!" -- 【-m表示message】
第十一步:把自己的仓库提交到公共服务器
git push origin master
==============开发人员1操作=============================
第十二步:拉取远程服务器最新数据
git pull
其他常用命令
git config --list #查看全局配置
git status #查看本地库状态
git checkout 分支名 #分支切换
git fetch #抓取分支
git reflog #查看版本信息
git branch #查看本地分支信息
git reset --hard 版本号 #版本穿梭
git reset --hard origin/develop #将本地分支重置到远程分支的状态
git rm --cached file.txt #忽略已经被追踪的文件
git add . #将所有发生变动的文件添加到暂存区
3.idea上操作git
3.1 提交文件
或
3.2拉取代码
3.3解决冲突
正常推送代码,如果出现如下情况可能,就是发生冲突了:
意思是本地代码和远程代码不一样,需要我们手动合并代码,点击 Merge 合并
点击Merge手动合并
中间区域是最终的效果,把中间区域改成你想要的代码即可,然后点击 apply 应用
解决完冲突后,重新执行推送流程
4.分支管理
使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线,不同分支的代码是相互隔离的,也可以通过合并分支的方式来把多个分支的代码合并再一起。企业中,有严格的项目代码控制,不是任何人都能随意操作核心代码。项目开发都是协同开发,必定是多个人来一起开发同一个项目,如果大家都在同一个代码库上去做操作,代码很容易发生冲突。所以,分支开发模式就应运而生。在分支上做开发,调试好了后再合并到主分支。那么每个人开发模块都不会影响到别人。
4.1完整的git版本分支模型图
- master 主分支
master分支是Git默认的主分支,它包含了项目的稳定版本。通常,master分支用于发布正式版本,即经过测试和验证的可靠代码。一般情况下,不应该直接在master分支上进行开发,而是通过其他分支进行开发,并在开发完成后将代码合并到master分支。
- release 预发布分支
release 分支可以认为是 master 分支的未测试版,基于develop分支克隆,主要用于打包给测试人员测试,比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release 分支,测试没有问题就合并到master 分支,只有develop分支可以合并到该分支上,在测试过程中发现的BUG就从该分支再切一个分支进行修复,修复完之后再合并到develop分支
- develop 开发分支
基于master分支克隆日常开发分支,该分支正常保存了开发的最新代码,不在该分支上开发,在feature分支上开发具体的新功能然后合并到该分支上,当某一期的功能全部开发完成就合并到release分支,打包给测试人员测试
- feature (开发新功能)
feature分支是用于开发单个功能或解决某个问题的分支。当需要开发新功能时,可以从develop分支上创建一个新的feature分支,并在该分支上进行开发工作。在feature分支上进行的开发工作是相对独立的,不会影响其他分支的代码。一旦功能开发完成并通过测试,可以将feature分支合并回develop分支
- hotfix (紧急修复)
线上紧急bug修复分支 ,基于master分支克隆, 用于对线上版本的BUG进行修复 ,BUG修复完之后需要合并到develop和master分支
4.2分支的使用
4.2.1IDEA中创建分支
在IDEA任务栏右下角有一个 : Get:master代表当前工作空间是在master分支
如图:这里有一些Git的常用操作,如果需要创建一个新的分支可以使用 Get:master -> New Branch 可以新建一个分支,然后填上分支名。
如果想要切换到某一个分支,可以直接选中分支名 -> 点击 check out 即可切换。比如我们可以选中: remote 下的 feature分支,然后进行checkout ,那么工作空间就会切换到 feature分支。
4.2.2合并分支
现在我们在自己的feature分支中编写好功能,然后接下来就是需要把代码合并到 Develop分支了。首先我们在IDEA工具中把代码切换到开发分支
切过来发现 项目中是没有 这是我新写的代码.txt刚才写的代码的。那么就是需要我们把feature分支中的代码合并过来,如下:(在develop分支把feature分支的代码合并到develop分支) ,合并代码是有可能产生冲突的,需要根据情况解决冲突
合并过来之后就发现在当前分支就有了feature分支的代码了,然后我们可以pull(拉取)一下远程代码,如果有冲突就解决冲突,没冲突就可以push代码到develop的远程分支了。