Git使用规范及命令

news2024/10/6 10:37:52

文章目录

    • 一、Git工作流
    • 二、分支管理
    • 三、Git命令操作规范
        • 1. 切到develop分支,更新develop最新代码
        • 2. 新建feature分支,开发新功能
        • 3. 完成feature分支,合并到develop分支
        • 4. 当某个版本所有的 feature 分支均合并到 develop 分支,就可以切出 release 分支,准备发布新版本,提交测试并进行 bug fix
        • 5. 所有 bug 修复完成,准备发布新版本
        • 6. 线上出现 bug,需要紧急发布修复版本
        • 7. 分支间操作注意事项
    • 四、git常用命令
      • 拉取
      • 增删文件
      • 提交
      • 暂存代码
      • 撤销
      • 分支
      • 修改查询与提交日志

一、Git工作流

在这里插入图片描述

  1. 工作区(Workspace)是电脑中实际的目录。
  2. 暂存区(Index)类似于缓存区域,临时保存你的改动。
  3. 仓库区(Repository),分为本地仓库和远程仓库。

通常提交代码分为几步:

  1. git add从工作区提交到暂存区
  2. git commit从暂存区提交到本地仓库
  3. git push从本地仓库提交到远程仓库

二、分支管理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

三、Git命令操作规范

1. 切到develop分支,更新develop最新代码
git checkout develop
git pull --rebase

rebase没有产生新的节点,使用rebase的git演进路线(提交树)是一直向前的,这样在版本回退时也很容易;用merge的git路线是跳跃的,可以明确的知道是从哪个分支或节点修改的。

当合并代码有冲突时,需要手动修改冲突内容后,add,commit, push. 而rebase 操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后, 再执行 git rebase –continue 继续操作,再push。

2. 新建feature分支,开发新功能
git checkout -b feature/xxx
...
git add <files>
# commit提交时,不能使用 -m 参数,这里只做示例
git commit -m "feat(xxx): commit a"
git commit -m "feat(xxx): commit b"
# 其他提交
...

# 如果此时 develop 分支有一笔提交,影响到你的 feature 开发,可以 rebase develop 分支,前提是 该 feature 分支只有你自己一个在开发,如果多人都在该分支,需要进行协调

# 切换到 develop 分支并更新 develop 分支代码
git checkout develop
git pull --rebase

# 切回 feature 分支
git checkout feature/xxx
git rebase develop

# 如果需要提交到远端,且之前已经提交到远端,此时需要强推(强推需慎重!)
git push --force
3. 完成feature分支,合并到develop分支
# 切到 develop 分支,更新下代码
git checkout develop
git pull --rebase

# 合并 feature 分支 不快进合并
git merge feature/xxx --no-ff 

# 删除 feature 分支
git branch -d feature/xxx

# 推到远端
git push origin develop
4. 当某个版本所有的 feature 分支均合并到 develop 分支,就可以切出 release 分支,准备发布新版本,提交测试并进行 bug fix
# 当前在 develop 分支
git checkout -b release/xxx

# 在 release/xxx 分支进行 bug fix
git commit -m "fix(xxx): xxxxx"
...
5. 所有 bug 修复完成,准备发布新版本
# master 分支合并 release 分支并添加 tag
git checkout master
git merge --no-ff release/xxx 
# 添加版本标记,这里可以使用版本发布日期或者具体的版本号
git tag 1.0.0

# develop 分支合并 release 分支
git checkout develop
git merge --no-ff release/xxx

# 删除 release 分支
git branch -d release/xxx
6. 线上出现 bug,需要紧急发布修复版本
# 当前在 master 分支
git checkout master

# 切出 hotfix 分支
git checkout -b hotfix/xxx

... 进行 bug fix 提交

# master 分支合并 hotfix 分支并添加 tag(紧急版本)
git checkout master
git merge --no-ff hotfix/xxx 
# 添加版本标记,这里可以使用版本发布日期或者具体的版本号
git tag 1.0.1

# develop 分支合并 hotfix 分支(如果此时存在 release 分支的话,应当合并到 release 分支)
git checkout develop
git merge --no-ff hotfix/xxx

# 删除 hotfix 分支
git branch -d hotfix/xxx
7. 分支间操作注意事项
  • 同一分支 git pull 使用 rebase
  • 分支合并使用 --no-ff

四、git常用命令

拉取

# 下载远程仓库的所有变动 
$ git fetch [remote]
# 显示所有远程仓库 
$ git remote -v
# 显示某个远程仓库的信息 
$ git remote show [remote]
# 增加一个新的远程仓库,并命名 
$ git remote add [remote-name] [url]
# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
# 取回远程仓库的变化,并与本地分支变基合并
$ git pull --rebase [remote] [branch]

增删文件

#添加当前目录的所有文件到暂存区
$ git add .
#添加指定文件到暂存区
$ git add <file1> <file2> ...
#添加指定目录到暂存区,包括其子目录
$ git add <dir>
#删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
#停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]
#改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

提交

# 提交暂存区到仓库区
$ git commit -m [message]
# 提交工作区与暂存区的变化直接到仓库区
$ git commit -a
# 提交时显示所有 diff 信息
$ git commit -v
# 提交暂存区修改到仓库区,合并到上次修改,并修改上次的提交信息
$ git commit --amend -m [message]
# 上传本地指定分支到远程仓库
$ git push [remote] [remote-branch]

暂存代码

暂存就是把你当前的所有修改(不包括新增文件)保存到你本地仓库的一个临时暂存区。保存后则可以执行git pull拉取远程代码到本地,再把暂存区的修改释放出来。这样我们就可以保证在提交到本地之前就可以把这些远程和本地的提交都处理干净。

# 将未提交的变化放在储藏区
$ git stash
# 将储藏区的内容恢复到当前工作区
$ git stash pop
常用git stash命令:
# 执行存储时,添加备注
git stash save "save message" 
#查看stash了哪些存储
git stash list  
#显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num}
git stash show 
#应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储
git stash apply 
git stash apply stash@{$num}
#恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下
git stash pop 
git stash pop stash@{$num} 
#丢弃stash@{$num}存储,从列表中删除这个存储
git stash drop stash@{$num} 
#删除所有缓存的stash
git stash clear 

撤销

# 恢复暂存区的指定文件到工作区
$ git checkout [file]
# 恢复暂存区当前目录的所有文件到工作区
$ git checkout .
# 恢复工作区到指定 commit
$ git checkout [commit]
# 重置暂存区的指定文件,与上一次 commit 保持一致,但工作区不变
$ git reset [file]
# 重置暂存区与工作区,与上一次 commit 保持一致
$ git reset --hard
# 重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变
$ git reset [commit]
# 重置当前分支的HEAD为指定 commit,同时重置暂存区和工作区,与指定 commit 一致
$ git reset --hard [commit]
# 新建一个 commit,用于撤销指定 commit
$ git revert [commit]

分支

#列出所有本地分支
$ git branch
#列出所有本地分支和远程分支
$ git branch -a
#新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
#新建一个分支,并切换到该分支
$ git checkout -b [new_branch] [remote-branch]
切换到指定分支,并更新工作区
$ git switch [branch-name]
#合并指定分支到当前分支
$ git merge [branch]
#选择一个 commit,合并进当前分支
$ git cherry-pick [commit]
#删除本地分支,-D 参数强制删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin -D 分支名

修改查询与提交日志

# 查看工作区文件修改状态
$ git status               
# 查看工作区文件修改具体内容   
$ git diff [file]
# 查看暂存区文件修改内容
$ git diff --cached [file] 
# 查看版本库修改记录
$ git log                  
# 查看某人提交记录
$ git log --author=someone
# 查看某个文件的历史具体修改内容
$ git log -p [file]        
# 查看某次提交具体修改内容
$ git show [commit]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1717402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【漏洞复现】大华 DSS 数字监控系统 user_edit.action 信息泄露漏洞

0x01 产品简介 大华 DSS 数字监控系统是大华开发的一款安防视频监控系统&#xff0c;拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。 0x02 漏洞概述 大华 DSS 数字监控系统 user_edit.action 接囗处存在信息泄露漏洞。未经身份验证的远程攻击者可利用此漏洞…

无意间看到男主眼神,这也太有感觉了吧❗❗

2025即将首播《藏海传》中国大陆剧情/奇幻/古装共40集。 原本&#xff0c;稚奴身为大雍国钦天监监正蒯铎之子&#xff0c;背负着家族血仇。 历经十年沉默与磨砺&#xff0c;他化名为藏海&#xff08;肖战 饰&#xff09;&#xff0c;重返京城。 他凭借卓越的营造技艺和深谙纵…

gitbook安装 报错处理 windows系统

首先需要有nodejs。若没有&#xff0c;则去nodejs官网下载nodejs安装。 然后安装gitbook。命令如下&#xff1a;这是在linux系统的命令。 $ npm config set registry http://registry.npm.taobao.org #设置一下淘宝镜像&#xff08;非必选&#xff09; $ npm install gitbo…

B站稿件生产平台高可用建设分享

背景 B站作为国内领先的内容分享平台&#xff0c;其核心功能之一便是支持UP主们创作并分享各类视频内容。UP主稿件系统作为B站内容生产的关键环节&#xff0c;承担着从内容创作到发布的全过程管理。为了满足不同创作者的需求&#xff0c;B站提供了多种投稿渠道&#xff0c;包括…

深入探讨 Android 的 View 显示过程与源码分析

文章目录 1. 探讨 Android 的 View 显示过程1.1. onFinishInflate1.2. onAttachedToWindow1.3. onMeasure1.4. onSizeChanged1.5. onLayout1.6. onDraw 2. 系统代码分析1.1. onFinishInflate1.2. onAttachedToWindow1.3. onMeasure1.4. onSizeChanged1.5. onLayout1.6. onDraw …

基于深度学习的端到端语音识别时代

随着深度学习的发展&#xff0c;语音识别由DNN-HMM时代发展到基于深度学习的“端到端”时代&#xff0c;这个时代的主要特征是代价函数发生了变化&#xff0c;但基本的模型结构并没有太大变化。总体来说&#xff0c;端到端技术解决了输入序列长度远大于输出序列长度的问题。 采…

探索k8s集群的存储卷 emptyDir hostPath nfs

目录 一 含义 查看支持的存储卷类型 emptyDir存储卷 1.1 特点 1.2 用途 1.3部署 二、hostPath存储卷 一 含义 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重…

py管理系统

self. 才是属性被保存&#xff0c;能够被实例化使用&#xff0c;否则只是局部变量 pop&#xff1a; 使用索引删除元素&#xff0c;并且需要返回被删除的元素。默认删除列表中的最后一个元素。 remove&#xff1a; 按值删除元素&#xff0c;不需要知道索引。如果列表中有多个相同…

rtos最小任务切换的实现 keil软件仿真 stm32 PendSV

最小任务切换的实现 本例子实现了一个 rtos 最小的任务切换功能&#xff0c;使用 keil 仿真功能&#xff0c;在模拟的 stm32f103 的器件上实现了使用 PendSV 中断切换线程的效果。 git 源码仓库&#xff1a;https://github.com/yutianos/rtos-little 本文链接&#xff1a;csdn…

VMware虚拟机安装Ubuntu-Server版教程(超详细)

目录 1. 下载2. 安装 VMware3. 安装 Ubuntu3.1 新建虚拟机3.2 安装操作系统 4. SSH方式连接操作系统4.1 好用的SSH工具下载&#xff1a;4.2 测试SSH连接 5. 开启root用户登录5.1 设置root用户密码5.2 传统方式切换root用户5.3 直接用root用户登录5.4 SSH启用root用户登录 6. 安…

Java-----Comparable接口和Comparator接口

在Java中&#xff0c;我们会经常使用到自定义类&#xff0c;那我们如何进行自定义类的比较呢? 1.Comparable接口 普通数据的比较 int a10;int b91;System.out.println(a<b); 那自定义类型可不可以这样比较呢&#xff1f;看一下代码 我们发现会报错&#xff0c;因为自定义…

OSError: [Errno 117] Structure needs cleaning

一 问题描述 OSError: [Errno 117] Structure needs cleaning: /tmp/pymp-wafeatri 我重新使用SSH登录也会提示这个类似问题 二 解决方法 2.1 尝试删除报错的文件 &#xff08;想直接看最终解决方法的可忽略此处&#xff09; sudo rm -rf /tmp/pymp-wafeatri 此种方法只能保证…

C++:SLT容器-->vector

C:SLT容器-->vector 1. vector 构造函数2. vector 赋值操作3. vector 容器和大小4. vector 插入和删除5. vector 数据存取6. vector 互换容器7. vector 预留空间 vector数据结构和数组非常相似&#xff0c;也称为单端数组。不同的是数组是静态空间&#xff0c;而vector可以动…

深入分析 Android Service (三)

文章目录 深入分析 Android Service (三)1. Service 与 Activity 之间的通信2. 详细示例&#xff1a;通过绑定服务进行通信2.1 创建一个绑定服务2.2 绑定和通信 3. 优化建议4. 使用场景5. 总结 深入分析 Android Service (三) 1. Service 与 Activity 之间的通信 在 Android …

网页截图并添加美观外壳:无需PS轻松实现的方法

在日常生活和工作中&#xff0c;我们经常需要截取网页的屏幕快照&#xff0c;以便于分享、保存或用于其他用途。尽管许多人认为使用Photoshop&#xff08;PS&#xff09;是最佳选择&#xff0c;但实际上&#xff0c;有许多更简单、快捷的方法可以帮助我们实现这一目标&#xff…

【C++题解】1446. 人口增长问题

问题&#xff1a;1446. 人口增长问题 类型&#xff1a;循环应用 题目描述&#xff1a; 我国现有 x 亿人口&#xff0c;按照每年 0.1% 的增长速度&#xff0c;n 年后将有多少人&#xff1f; 输入&#xff1a; 一行&#xff0c;包含两个整数 x 和 n &#xff0c;分别是人口基…

Oracle导出clob字段到csv

使用UTL_FILE ref: How to Export The Table with a CLOB Column Into a CSV File using UTL_FILE ?(Doc ID 1967617.1) --preapre data CREATE TABLE TESTCLOB(ID NUMBER, MYCLOB1 CLOB, MYCLOB2 CLOB ); INSERT INTO TESTCLOB(ID,MYCLOB1,MYCLOB2) VALUES(1,Sample row 11…

Go 优雅的爬虫框架 - Colly

Colly 是一款用 Go 语言编写的优雅网络爬虫框架,速度快、灵活且易于使用 关键特性包括: 线程安全。用户友好的 API。支持 XHR(Ajax)和 WebSocket。缓存和持久化。支持速度限制和分布式爬取。强大的可扩展性。colly采集器配置 AllowedDomains: 设置收集器使用的域白名单,设…

rtl8723DU移植 android4.4 4418

一、 linux 的移植。 首先编译一遍确保没有问题。 将驱动拷贝到 driver/net/wireless 目录下。 使用的是&#xff1a; 改写 makefile Kconfig 去改写 8723 的makefile 设置menuconfig 使能固有的 库。 使能USB部分 ieee 部分 编译一遍 有报错。 解决&#xff1a; …

NPDP(New Product Development Professional)

NPDP&#xff08;New Product Development Professional&#xff09; NPDP考试介绍 NPDP证书介绍