date
Apr 8, 2023 12:40 AM
type
status
slug
summary
tags
category
updated
Apr 1, 2024 07:24 AM
icon
password
摘要
在日常工作和学习中,会遇到多人开发项目。那么项目之间的合并就是一个大问题。多人开发采用git管理代码,如果没有一个好的git工作流程就会导致项目维护巨难受。凑巧之前看到一个大佬的视频,介绍了一套git上多人开发的工作流程。与自己的实际工作环境结合总结了一下。
操作流程
git clone
// 到本地
git checkout -b xxx
切换至(相当于复制了remote的仓库到本地的xxx分支上
- 修改或者添加本地代码(部署在硬盘的源文件上)
git diff
查看自己对代码做出的改变
git add .
上传更新后的代码至暂存区
git commit -m "xxxxx"
可以将暂存区里更新后的代码更新到本地git
git push origin xxx
将本地的新分支xxx上传至github上的git
----------------------------------------------------------
(如果在写自己的代码过程中发现远端GitHub上代码出现改变)
git add .
,git commit -m “”
先保存自己的代码,本地提交一下,不做线上提交
git checkout main
切换回main分支
git pull origin master(main)
将远端修改过的代码再更新到本地
git checkout xxx
回到xxx分支
git rebase main
我在xxx分支上,先把main移过来,然后根据我的commit来修改成新的内容(中途可能会出现,rebase conflict -----》手动选择保留哪段代码)
git rebase -—abort
如果发现合并有问题,不想要了,使用此命令,丢弃合并的内容git add .
git rebase --continue
如果出现需要手动保留哪段代码,并且很多。在你选择完之后。可能文件会出现感叹号。这个时候执行上面的操作。然后出现的文件内容。输入:wq
保存退出。
git push -f origin xxx
把rebase后并且更新过的代码再push到远端github上(-f ---》强行)
- 原项目主人采用
pull request
中的squash and merge
合并所有不同的commit
----------------------------------------------------------
然后去线上合并你的分支
这里可能好多人用github或者自己搭建的git平台,你去线上网站可以看到你提交的git分支,点击它,会有一传文字提示
halo3 had recent pushes less than a minute ago
。这个时候点击compare&pull request
,按照它的提示一步点下去就行了。远端完成更新后
git branch -d xxx
删除本地的git分支
git pull origin master
再把远端的最新代码拉至本地
名词解释
git新手,百度并整理了下视频里出现的指令及含义,如有错误欢迎指正。
git checkout -b xxx
:git checkout xxx是指切换到xxx(用local区的xxx替换disk区文件),-b意味着branch,即创建新分支,这条指令合起来意思是创建并切换到xxx。
git diff
:查看暂存区与disk区文件的差异。
git add xxx
:将xxx文件添加到暂存区。
git commit
:将暂存区内容添加到local区的当前分支中。
git push <RemoteHostName> <LocalBranchName>
:将local区的LocalBranchName分支推送到RemoteHostName主机的同名分支。(若加-f表示无视本地与远程分支的差异强行push)
git pull<RemoteHostName> <RemoteBranchName>
:同上,不过改成从远程主机下载远程分支并与本地同名分支合并。
git rebase xxx
:假设当前分支与xxx分支存在共同部分common,该指令用xxx分支包括common在内的整体替换当前分支的common部分(原先xxx分支内容为common->diversityA,当前分支内容为common->diversityB,执行完该指令后当前分支内容为common->diversityA->diversityB)。
git branch -D xxx
:不加-D表示创建新local分支xxx,加-D表示强制删除local分支xxx。
git拉取指定的提交记录(用于合并出错了,急救一下)
- 首先,你需要克隆你想要拉取的远程仓库到本地,使用命令
git clone [地址]
,例如git clone (https://github.com/aa/bb.git)
。
- 然后,你需要查看你想要拉取的提交记录的ID,使用命令
git log --pretty=oneline
,这会显示每个提交记录的简短信息和ID。
- 接着,你需要创建一个新的分支,并切换到该分支,使用命令
git checkout -b [分支名] [提交ID]
,例如git checkout -b master 2342dsfsdfs2
。
- 最后,你就可以在本地分支上查看或修改指定提交记录下的代码了。如果你想要将本地分支推送到远程仓库,使用命令
git push origin
git拉去指定的分支
在Git中,如果你想拉取(即克隆)一个特定的分支的代码到本地仓库,你可以使用以下命令:
这里的 <branch-name> 是你想要拉取的分支的名字, <repository-url> 是远程仓库的URL。
例如,如果你想要克隆名为
develop
分支的代码,你可以这么做:这样,只有指定的分支会被克隆到本地仓库中。如果你之前已经克隆了整个仓库,或者在现有的本地仓库工作,你可以使用 git checkout 命令切换到指定的分支:
确保将 <branch-name> 替换为你希望切换到的分支的名字。如果该分支不存在于你的本地仓库,上面的命令会自动在本地为你创建一个新的分支并跟踪远程分支。
github提交规范
- type类型(必须)
代码 | 说明 |
feat | 新功能 |
fix | 修复 |
docs | 文档注释 |
style | 代码格式(不影响代码运行的变动) |
refactor | 重构、优化(既不增加新功能,也不是修复bug) |
perf | 性能优化 |
test | 增加测试 |
chore | 构建过程或辅助工具的变动 |
revert | 回退 |
build | 打包 |
- scope(可选)
scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
- subject(必须)
- 结尾不加句号或其他标点符号。
- 根据以上规范git commit message将是如下的格式:
subject是commit目的的简短描述,不超过50个字符。
添加多个emoji表情图标
在提交内容的前面增加了emoji标签: :emoji:,其中emoji是表情图标的标签,列表见下面的附录表格。
emoji | emoji代码 | commit 说明 |
:art: (调色板) | :art: | 改进代码结构/代码格式 |
:zap: (闪电):racehorse: (赛马) | :zap:“:racehorse: | 提升性能 |
:fire: (火焰) | :fire: | 移除代码或文件 |
:bug: (bug) | :bug: | 修复 bug |
:ambulance: (急救车) | :ambulance: | 重要补丁 |
:sparkles: (火花) | :sparkles: | 引入新功能 |
:memo: (备忘录) | :memo: | 撰写文档 |
:rocket: (火箭) | :rocket: | 部署功能 |
:lipstick: (口红) | :lipstick: | 更新 UI 和样式文件 |
:tada: (庆祝) | :tada: | 初次提交 |
:white_check_mark: (白色复选框) | :white_check_mark: | 增加测试 |
:lock: (锁) | :lock: | 修复安全问题 |
:apple: (苹果) | :apple: | 修复 macOS 下的问题 |
:penguin: (企鹅) | :penguin: | 修复 Linux 下的问题 |
:checkered_flag: (旗帜) | :checked_flag: | 修复 Windows 下的问题 |
:bookmark: (书签) | :bookmark: | 发行/版本标签 |
:rotating_light: (警车灯) | :rotating_light: | 移除 linter 警告 |
:construction: (施工) | :construction: | 工作进行中 |
:green_heart: (绿心) | :green_heart: | 修复 CI 构建问题 |
:arrow_down: (下降箭头) | :arrow_down: | 降级依赖 |
:arrow_up: (上升箭头) | :arrow_up: | 升级依赖 |
:construction_worker: (工人) | :construction_worker: | 添加 CI 构建系统 |
:chart_with_upwards_trend: (上升趋势图) | :chart_with_upwards_trend: | 添加分析或跟踪代码 |
:hammer: (锤子) | :hammer: | 重大重构 |
:heavy_minus_sign: (减号) | :heavy_minus_sign: | 减少一个依赖 |
:whale: (鲸鱼) | :whale: | Docker 相关工作 |
:heavy_plus_sign: (加号) | :heavy_plug_sign: | 增加一个依赖 |
:wrench: (扳手) | :wrench: | 修改配置文件 |
:globe_with_meridians: (地球) | :globe_with_meridians: | 国际化与本地化 |
:pencil2: (铅笔) | :pencil2: | 修复 typo |
以下是常见的Git分支命名规范
- main/master:主分支,用于发布稳定版本的代码,不能直接在该分支上进行开发。
- develop:开发分支,用于进行日常开发,所有的 feature 分支都从该分支创建,也是最终合并到 main/master 分支的来源。
- feature/{feature_name}:功能分支,用于开发新功能或修复 bug。功能分支的命名一般以 feature/ 开头并接上功能名称或 bug 编号。
- hotfix/{issue_number}:修补分支,用于紧急修复问题,一般从 main/master 分支创建。修补分支的命名一般以 hotfix/ 开头并接上问题编号。
- release/{version_number}:预发布分支,用于进行发布前的测试和准备工作。预发布分支的命名一般以 release/ 开头并接上版本号。
命名规范可以根据团队的实际情况做出调整,但应该保证命名规范具有可读性和清晰性。