GIT简单应用
网站资源
- GIT官网:https://git-scm.com
- GIT中文网:http://www.git-scm.com.cn/
- GIT可视化工具:https://sourcetreeapp.com/
- GIT可视化工具使用参考:https://www.cnblogs.com/tian-xie/p/6264104.html
GIT安装
网上很多,可参考:https://www.cnblogs.com/kevinzhushrek/p/16092144.html
Intellij idea下配置GIT
File - settings 搜索git,Path to Git executable中选择已安装的GIT的可执行文件,点击“Test”可进行测试验证
开发规范
创建项目时(一般是服务型项目,工具型或辅助型项目可以简单一些),会针对不同环境创建三个常设分支:
1.develop:开发环境的稳定分支,公共开发环境基于该分支构建。
2.pre-release:测试环境的稳定分支,测试环境基于该分支构建。
3.master:生产环境的稳定分支,生产环境基于该分支构建。仅用来发布新版本,除了从pre-release或生产环境Bug修复分支进行merge,不接受任何其它修改
平时开发工作中,会根据需要由开发人员创建两类临时分支:
1.功能(feature)分支:为了开发某个特定功能,从develop分支上面分出来的。开发完成后,要merge到develop分支。功能分支的命名,可以采用feature-的形式命名(为任务单号)
2.Bug修复(fixbug)分支:为了修复某个bug,从常设分支上面分出来的。修复完成后,再merge到对应的分支。Bug修复分支的命名,可以采用fixbug-的形式命名(为bug单号)
正常开发流程
1.从develop分支切出一个新分支,根据是功能还是bug,命名为feature-* 或 fixbug-*。
2.开发者完成开发,提交分支到远程仓库。
3.开发者发起merge请求,将新分支请求merge到develop分支,并提醒code reviewer进行review
4.code reviewer对代码review之后,若无问题,则接受merge请求,新分支merge到develop分支,同时可删除新建分支;若有问题,则不能进行merge,可close该请求,同时通知开发者在新分支上进行相应调整。调整完后提交代码重复review流程。
5.转测时,直接从当前develop分支merge到pre-release分支,重新构建测试环境完成转测。
6.测试完成后,从pre-release分支merge到master分支,基于master分支构建生产环境完成上线。并对master分支打tag,tag名可根据版本发布规范定义。
流程示意图如下
并行开发测试环境Bug修复流程
并行开发(即前一个版本已经转测但未上线,后一个版本又已在开发中并部分合并到了develop分支)过程中,转测后测试环境发现的bug需要修复,但是develop分支此时又有新内容且该部分内容目前不计划转测,可以pre-release切出一个bug修复分支。完成之后需要同时merge到pre-release分支与develop分支。merge时参考“正常开发流程”。
流程示意图如下
生产环境Bug修复流程
生产环境的Bug分两种情况:
1.紧急Bug:严重影响用户使用的为紧急Bug,需立即进行修复。如关键业务流程存在问题,影响用户正常的业务行为。
2.非紧急Bug或优化:非关键业务流程问题,仅影响用户使用体验,或出现频率较小等,为非紧急Bug,可规划到后续版本进行修复。
非紧急Bug修复参考“正常开发流程”。
紧急Bug修复,需要从master分支切出一个bug修复分支,完成之后需要同时merge到master分支与develop分支(如果需要测试介入验证,则可先merge到pre-release分支,验证通过后再merge到master分支上线)。merge时参考“正常开发流程”。
流程示意图如下
常用命令
前提条件:已有GIT账号
备注:git bash终端出现end,按q键可退出
命令Command | 描述Descriptio |
---|---|
git config --local --list / git config --local -l | 查看仓库配置信息 |
git config --global --list / git config --global -l | 查看用户配置信息 |
git config --system --list / git config --system-l | 查看系统配置信息 |
git config --list / git config -l | 查看全部配置信息 |
git config configName | 查看配置configName属性的值 |
git config --add configName configValue | 添加配置属性值,configName必须要包含节点,如user.name |
git config configName configValue | 修改配置属性值,configName为已存在的属性,configValue为要修改的值 |
git config --unset configName | 删除配置属性 |
git init | 通过命令初始化代码库 |
git clone [url] | 通过克隆地址初始化代码库 |
git clone -b 远程分支名 [url] | 通过指定远程分支名克隆地址初始化代码库 |
git remote | 查看远程仓库信息 |
git remote -v | 查看远程仓库详细信息 |
git pull origin <远程分支名>:<本地分支名> | 将远程主机 origin 的分支拉取过来,与本地的分支合并; 如果远程分支是与当前分支合并,则冒号后面的部分可以省略 等同于: 先 git fetch origin <远程分支>【从远程分支更定代码但并未更新到本地分支】 再 git merge origin/<远程分支>【将远程分支与本地分支合并】 |
git add [file1] [file2] ... | 添加一个或多个文件到暂存区 |
git add [dir] | 添加指定目录到暂存区,包括子目录 |
git add . | 添加当前目录下的所有文件到暂存区 |
git commit -m [message] | 提交暂存区到本地仓库中 |
git commit [file1] [file2] ... -m [message] | 提交暂存区的指定文件到仓库区 |
git commit -a -m [message] | 设置修改文件后不需要执行 git add 命令,直接提交 |
git branch | 查看所有分支及当前所在分支 |
git branch -r | 查看远程分支 |
git branch -a | 查看所有分支,包括本地和远程 |
git branch branchName | 创建新的分支 |
git branch -d branchName | 删除指定分支 |
git checkout branchName | 切换到指定分支 |
git checkout -b branchName | 新建分支并切换到改分支 |
git checkout -b dev(本地分支名) origin/dev(远程分支名) | 远程拉取分支并创建本地分支 |
git checkout . | 将该分支下所有的修改撤销 |
git checkout -- filename | 将该分支下指定文件的修改撤销 |
git status | 显示有变更的文件,前提是未提交 |
git diff [file] | 显示工作区指定文件的修改差异 |
git diff | 显示工作区所有有修改的文件和修改内容 |
git merge [branch] | 合并指定分支到当前分支 |
git push origin <远程分支> | 把当前分支(develop或master)推送到远程对应(develop或master)分支 |
git push –u origin <远程分支> | 把当前分支(develop或master)推送到远程对应(develop或master)分支 第一次推送要用-u 以后不需要 |
git push origin --delete <远程分支> | 删除远程分支 |
cat [file] | 查看指定文件的内容 |
rm [file] | 删除工作区文件 |
git rm [file] | 将文件从暂存区和工作区中删除 |
git rm -f [file] | 强行从暂存区和工作区中删除指定文件【如:删除之前文件已经修改过并且已经放到暂存区域】 |
git rm --cached [file] | 停止追踪指定文件,但该文件会保留在工作区 |
git mv [file] [newfile] | 用于移动或重命名一个文件、目录或软连接 |
git log | 查看所有的commit提交记录 |
git log --oneline | 显示commit hash 前7个字符串和commit message说明 |
git log -p | 输出每个commit具体修改的内容,输出的形式以diff的形式给出 |
git log --author [username] | 根据指定的账号过滤commit |
git log -num | 限定log输出,num表示要输出的数量 |
git log --after / --before '日期' | 显示指定日期之前或之后的log,日期格式如7-1-2021 |
git log --pretty=oneline | 查看当前分支的提交历史 里面包含 commit id |
git show | 同git log -p输出类似,只不过它只显示一个commit的内容,如果不指定commit hash, 它默认输出HEAD指向commit的内容 |
git shortlog | 用来输出汇总信息,以作者进行分类 |
git push origin [tagName] | 推送到远程仓库 |
git push origin --tags | 存在很多未推送的本地标签,一次全部推送 |
git tag -a [tagName] [commitId] | 根据指定commit创建标签,此时需要编辑标签内容,Linux操作命令编辑保存即可 不加commitId,就是直接创建本地标签 |
git show [tagName] | 查看本地某个 tag 的详细信息 |
git tag 或者 git tag -l | 查看本地所有 tag |
git ls-remote --tags origin | 查看远程所有 tag |
git tag -d [tagName] | 删除本地tag |
git push origin :refs/tags/[tagName] | 删除远程tag |
git checkout -b [tagName] | tag检出 |
git tag -a [tagName] -m "xxx..." | 指定标签信息,前提是之前未添加 |
git checkout [tagName] | 切换标签 |
git reset [file] | 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 |
git reset --hard | 重置暂存区与工作区,与上一次commit保持一致 |
git reset --hard <目标版本号> | 回退到某个版本回退点之前的所有信息,目标版本号可通过git log查看 |
git reset HEAD^ | 回退所有内容到上一个版本 |
git reset HEAD^ [file] | 回退指定文件的版本到上一个版本 |
git reset <目标版本号> | 回退到指定版本 |
git reset --soft HEAD~3 | --soft 参数用于回退到某个版本,回退上上上一个版本 |
git reset –hard HEAD~3 | --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交,回退上上上一个版本 |
git reset --hard origin/master | 将本地的状态回退到和远程的一样 |
git reset head | 用于取消已缓存的内容 |
注意:谨慎使用 –hard 参数,它会删除回退点之前的所有信息。
HEAD 说明:
HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本
以此类推...
可以使用 ~数字表示
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本
以此类推...
gitea私有仓库搭建
Windows搭建
下载地址:https://dl.gitea.io/gitea/
选择可执行的.exe文件,如gitea-1.14.3-windows-4.0-386.exe
下载放于指定目录下双击运行即可
Linux搭建
1、安装git
yum -y install git
2、下载Gitea,下载最新的版本可以参考https://dl.gitea.io/gitea
wget -O gitea https://dl.gitea.io/gitea/1.14.3/gitea-1.14.3-linux-amd64
wget 默认下载到当前执行的wget的目录里
可剪切到指定目录下mv gitea /usr/local/software/
3、在下载到Gitea的目录下,修改权限
chmod +x gitea
4、运行Gitea
先切换到gitea的安装目录/usr/local/software
执行命令:./gitea web
后台运行:nohup ./gitea web &
5、访问gitea
http://IP:3000/ (或http://localhost:3000/)
刚登录访问需要修改配置,按要求正确修改即可使用
6、将gitea注册成服务
在目录/etc/systemd/system下或者/usr/lib/sytemd/system下新建文件gitea.service
编辑添加如下内容:
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
[Service]
RestartSec=2s
Type=simple
User=root
Group=root
WorkingDirectory=/usr/local/software/
ExecStart=/usr/local/software/gitea web -c /usr/local/software/custom/conf/app.ini
Restart=always
[Install]
WantedBy=multi-user.target
设置文件gitea.service的权限
chmod 755 -R gitea.service
重新加载配置信息(重要):systemctl daemon-reload
启动gitea:systemctl start gitea.service
查看进程状态及日志:systemctl status gitea.service
开机自启动:systemctl enable gitea.service
关闭自启动:systemctl disable gitea.service