🗒️Git工作流程
2022-11-5
| 2024-4-1
0  |  阅读时长 0 分钟
date
icon
password
description
permalink
categories
type
status
slug
summary
tags
category
updated
Apr 1, 2024 07:24 AM

摘要

在日常工作和学习中,会遇到多人开发项目。那么项目之间的合并就是一个大问题。多人开发采用git管理代码,如果没有一个好的git工作流程就会导致项目维护巨难受。凑巧之前看到一个大佬的视频,介绍了一套git上多人开发的工作流程。与自己的实际工作环境结合总结了一下。

操作流程

  1. git clone // 到本地
  1. git checkout -b xxx 切换至(相当于复制了remote的仓库到本地的xxx分支上
  1. 修改或者添加本地代码(部署在硬盘的源文件上)
  1. git diff 查看自己对代码做出的改变
  1. git add . 上传更新后的代码至暂存区
  1. git commit -m "xxxxx" 可以将暂存区里更新后的代码更新到本地git
  1. git push origin xxx 将本地的新分支xxx上传至github上的git
----------------------------------------------------------
(如果在写自己的代码过程中发现远端GitHub上代码出现改变)
  1. git add . ,git commit -m “” 先保存自己的代码,本地提交一下,不做线上提交
  1. git checkout main 切换回main分支
  1. git pull origin master(main) 将远端修改过的代码再更新到本地
  1. git checkout xxx 回到xxx分支
  1. git rebase main 我在xxx分支上,先把main移过来,然后根据我的commit来修改成新的内容(中途可能会出现,rebase conflict -----》手动选择保留哪段代码)
    1. git rebase -—abort 如果发现合并有问题,不想要了,使用此命令,丢弃合并的内容
  1. git add . git rebase --continue 如果出现需要手动保留哪段代码,并且很多。在你选择完之后。可能文件会出现感叹号。这个时候执行上面的操作。然后出现的文件内容。输入:wq 保存退出。
  1. git push -f origin xxx 把rebase后并且更新过的代码再push到远端github上(-f ---》强行)
  1. 原项目主人采用pull request 中的 squash and merge 合并所有不同的commit
----------------------------------------------------------

然后去线上合并你的分支

这里可能好多人用github或者自己搭建的git平台,你去线上网站可以看到你提交的git分支,点击它,会有一传文字提示halo3 had recent pushes less than a minute ago。这个时候点击compare&pull request,按照它的提示一步点下去就行了。

远端完成更新后

  1. git branch -d xxx 删除本地的git分支
  1. 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提交规范

  1. type类型(必须)
    1. 代码
      说明
      feat
      新功能
      fix
      修复
      docs
      文档注释
      style
      代码格式(不影响代码运行的变动)
      refactor
      重构、优化(既不增加新功能,也不是修复bug)
      perf
      性能优化
      test
      增加测试
      chore
      构建过程或辅助工具的变动
      revert
      回退
      build
      打包
  1. scope(可选)
    1. scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
  1. subject(必须)
    1. subject是commit目的的简短描述,不超过50个字符。
      • 结尾不加句号或其他标点符号。
      • 根据以上规范git commit message将是如下的格式:
 

添加多个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/ 开头并接上版本号。
命名规范可以根据团队的实际情况做出调整,但应该保证命名规范具有可读性和清晰性。
  • Git
  • Vue3 + Vite + Ts + Axios + Pinia + VueRouter 配置Git设置代理
    • Waline
    目录