Git
1.Git总结
2.Git常用命令流程图
3.Git分布式版本控制的管理方式图
4.设置用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱地址"
5.SSH公钥生成并使用
--进入ssh目录查看公钥
cd ~/.ssh
ls
cat ~/.ssh/id_rsa.pub
--如果不存在公钥 使用该命令生成
ssh-keygen -t rsa -C "邮箱地址"
--在https://gitee.com/profile/sshkeys 添加ssh公钥
--在https://github.com/settings/keys 添加ssh公钥
--如果gitee或者github添加公钥验证失败,可以使用该命令手动使公钥生效
ssh -add ~/.ssh/id_rsa.pub
--尝试连接gitee/github远程仓库
ssh -T git@gitee.com
ssh -T git@github.com
--使用ssh拉取项目 git clone [ssh地址]
git clone git@gitee.com:open_source_china_wpq/wangpengqing.git
--使用https克隆项目 git clone [https地址]
git clone https://gitee.com/open_source_china_wpq/wangpengqing.git
6.配置beyond compare成为git的比较和合并工具
#difftool 配置
git config --global diff.tool bc4
git config --global difftool.bc4.cmd "\"D:\Program Files\Beyond Compare 4\BComp.exe\" \"$LOCAL\" \"$REMOTE\""
#mergeftool 配置
git config --global merge.tool bc4
git config --global mergetool.bc4.cmd "\"D:\Program Files\Beyond Compare 4\BComp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
git config --global mergetool.bc4.trustExitCode true
7.Git撤销操作
1.撤销上一次提交,重新提交 git commit --amend
你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作。
git commit -m 'initial commit'
git add [忘记添加到暂存区的文件]
git commit --amend
最终你只会有一个提交——第二次提交将代替第一次提交的结果。
2.取消暂存的文件
git reset HEAD [文件...]
3.撤消对文件的修改
git checkout -- [文件]
8.Git的常见命令
git init :初始化好一个本地的库
git add . :添加当前目录的所有文件到暂存区
git commit -m '提示信息' :提交代码到本地的仓库
git status :查看版本库的状态、什么被修改过 但是还没有提交
git diff:这个命令的主要作用是查看当前状态和上一次修改的状态之间的区别
git log: 查看日志
git reset HEAD [文件名] : 撤销添加到暂存区的文件
git reflog:查看曾今使用过的那些命令
git clone [远程代码库的地址] :从远程克隆代码
git --version 查看git的版本
git --help Git的帮助文档
git pull 取回远程仓库的变化,并与本地分支合并
git push 上传本地指定分支到远程仓库
git branch :查看本地所有拥有的所有分支
git checkout -b [分支的名字] :创建一个新的分支 并切换到这个分支
git checkout [分支的名字] :切换到某一个分支
git merge [分支的名字] :将后面的分之合并到当前的分支上
git tag -a '名字' -m '值' :给当前的代码打个标记
git tag:获取当前本地的标记
git push origin [标签的名字] :推送一个本地的标签到远程
git tag -d [标签的名字] :删除本地的标签
9.GitFlow的工作流(企业如何使用Git)
-
master分支:master分支称为主分支、这个分支是受保护的、这个分支的主要作用是产品的对外发布的。
-
develop分支: 开发的分支、这个分支是基于master分支的一个克隆、这个分支的主要功能是做产品的编码的。
-
release分支: 测试分支、这个分支是基于develop分支的克隆、产品的编码工作完成之后、就需要对产品进行测试 这个分支的主要功能是做产品的测试 、测试工作完成之后 要将这个代码合并到 develop分支(临时分支 这个分支功能完成之后可以删除的)。
-
bugfix分支: 主要的功能是做bug的修复、基于master分支或者里程碑克隆、这个分组主要针对的是 已经上线的产品的bug修复、修复完成这个bug之后将修改好的代码合并到develop分支 和 develop再合并到master分支、目的实现之后就删除这个分支。
-
feature分支: 功能特征的分支、一般是基于develop分支的克隆、主要用来做探索性的功能的开发 、合并到develop分支、这个也是临时分支 实现功能之后 是可以删除的。
-
1.拉取代码
-
2.基于master分支创建develop分支
git checkout -b develop
- 3.将develop分支推送到远程
git push origin develop
- 4.开发代码提交到本地的暂存区
git add .
- 5.提交这个代码到本地库
git commit -m '提交的说明文字'
- 6.拉取远程的代码
git pull
- 7.提交代码到远程的develop分支上
git push origin develop
- 8.基于develop分支创建release分支
git checkout develop
git checkout -b release
git push origin release
- 9.测试完成了(提交代码到远程)
git add .
git commit -m 'xxxxxxx'
git pull
git push origin release
- 10.将代码合并到develop分支
git checkout develop
git merge release
- 11.将develop分支上的代码提交到远程库中
git add .
git commit -m '提交的信息'
git push origin develop
- 12.将develop分支的内容合并到master分支上
git checkout master
git merge develop
- 13.将master分支的内容直接提交到远程
git add .
git commit -m '提示信息'
git pull
git push origin master
- 14.创建里程碑并发布到远程
git tag -m '探探1.0版本发布' v1.0
git push origin v1.0
- 15.项目发布之后出现了bug
git checkout master
git checkout -b bugfix-v1.0
git add .
git commit -m '修改的bug内容'
git pull
git push origin bugfix-v1.0
- 16.需要将bug修改分支的内容合并到develop
git checkout develop
git merge bugfix-v1.0
git add .
git commit -m '合并的内容xxx'
git pull
git push origin develop
- 17.将develop分支的内容合并到master分支
git checkout master
git merge develop
git add .
git commit -m '提交内容到本地'
git pull
git push origin master
- 18.打一个新的里程碑
git tag -m '探探2.0开发完成' v2.0
git push origin v2.0
- 19.删除bugfix分支
git branch -d bugfix-v.1.0 //删除本地分支
git push origin :bugfix-v.1.0 //删除远程分支
- 20.流程分析
10. GIT实用命令
git branch -vv 查看本地分支,本地快照唯一标识,本地分支跟踪的远程分支
git checkout --track origin/[远程分支名] 创建一个新分支并指定跟踪的远程分支,
这样后续就可以简单 执行 git pull 和 git push功能而不需要指定远程分支
git remote show origin 查看远程仓库地址,分支,本地分支拉取和推送的远程分支跟踪情况
git 版本回退问题
11.gitignore忽略文件未生效问题解决
git rm -r --cached .
git add .
git commit -m 'update.gitgnore'
12. MideaFlow工作流
12.1 概念
- MideaFlow:美的分支管理模型,参考GitFlow、Aoneflow等分支管理模型
- MideaFlow只使用三种分支类型:主干分支、特性分支、发布分支,以及三条基本规则。
- 规则一,开始工作前,从主干创建特性分支
- 规则二,通过合并特性分支,形成发布分支
- 规则三,发布到线上正式环境后,合并相应的发布分支到主干,在主干添加标签,同时删除该发布分支关联的特性分支
- 工具使用:TortoiseGit / SourceTree
Workspace: 工作区,存放项目代码的地方
Staging Area: 暂存区,用于临时存放你的改动,通过add命令将工作区的内容暂存
Local Repository: 本地仓库,通过commit命令将暂存区内容提交到本地仓库,改动不影响远程仓库
Remote Repository: 远程仓库,Gitlab上的仓库,通过push命令将本地仓库的提交推送到Gitlab上
12.2 分支
- feature:特性分支,用于需求开发承载具体的功能开发与缺陷修复。
feature:功能分支 feature/【yyMMdd】/【需求编号】/【任务编号】
如:feature/210531/ MR20210302432001/001
* 针对特定的需求、功能模块的开发工作,从主干分支MASTER分出,最后合并到MASTER分支,
开发完成上线后,视情况删除。
- release:发布分支,集成feature分支用于发布。
release:预发布分支,测试分支(不做开发)
release/【环境类型sit uat ver】/【需求上线日期年月日】
如:release/sit/210601
* 上线前用于测试环境进行功能验证的发布分支,不直接进行修改,通过合并feature、hotfix分支进行更新。
* 从主干分支MASTER分出
- master:主干分支,开发基线分支。
master:主干分支 ,生产环境代码分支(不做开发)
- hotfix:Bug修复分支,用于紧急修复分支。
hotfix: bug修复分支
hotfix/【yyMMdd】/【三位递增序号】
如:hotfix/210605/001
12.3 合并规则
- feature基于MASTER分支创建
feature->release sit
feature->release uat
feature->release ver
feature->master
12.4 常用命令
命令 | 说明 |
---|---|
Pull | 下载远程分支到工作区,并与本地分支合并 |
Fetch/ Clone | 下载远程分支到本地分支 |
Checkout | 下载本地分支到工作区 |
Add | 添加文件到暂存区 |
Commit | 提交暂存区到本地仓库 |
Push | 推送本地仓库到远程仓库 |
Merge | 合并两个分支 |
Cherry-pick | 合并指定的提交 |
Reset | 重置当前分支到指定版本 |
Stash/Unstash | 暂存本地修改内容 |
Status | 查看本地仓库状态,显示有变更的文件 |
Diff | 显示暂存区与工作区的文件差异 |
Log | 查看提交日志 |
Reflog | 查看操作日志 |
Blame | 查看特定文件的提交记录 |
Revert | 回退 |
- Reset
重置当前工作区到指定的版本,从提交日志中选择一个提交,
在reset的窗口中选择reset的模式。
三种reset模式:
Soft:工作区和暂存区的内容保留,本地仓库被重置,
但本地仓库与指定提交之间的差 异会提交到暂存区。
Mixed(默认):工作区的内容保留,暂存区与本地方库被重置,
但本地仓库与指定提交之前的差异会放入工作区。
Hard:工作区、暂存区、本地仓库都被重置,即所有内容都被重置。
- Stash/Unstash
用于缓存工作区的修改内容,与add命令添加到暂存区不一样,
stash操作不会把内容添加到暂存区,只是将修改内容存放入到本地缓存中,
可以随时从缓存中应用,并且可以进行多次缓存。
适用于多分支同时进行开发时,可以临时缓存本地工作区的修改内容,不影响分支间开发的内容
12.5 多分支并行开发切换操作
- 切换前stash将工作区未提交的内容缓存
- 执行pull拉取远程仓库最新的内容
- Checkout需要切换的新分支
- 在新分支上进行开发
- 如开发到一半需要切换原来的分支则执行第1步操作缓存
- Checkout到原来的分支
- 执行pull更新分支
- 执行unstash操作应用原来缓存的内容
12.6 分支合并
若分支合并时,只需要上线分支中的部分功能,
则不能使用merge方式合并整个分支,需要使用cherry-pick操作合并需要的提交,
跟目前SVN根据版本号合并的方式类似
12.7 代码回退
通过log或者reflog命令查看操作历史记录
选择需要回退的操作
执行revert命令回退指定的提交,实际上是在本地工作区把该提交的内容进行反向的修改
Commit到本地仓库
Push到远程仓库