Git使用规范及命令

server/2024/11/14 21:01:14/

文章目录

    • 一、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_136">四、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.ppmy.cn/server/46412.html

相关文章

前端最新面试题(基础模块HTML/CSS/JS篇)

目录 一、HTML、HTTP、WEB综合问题 1 前端需要注意哪些SEO 2 img的title和alt有什么区别 3 HTTP的几种请求方法用途 4 从浏览器地址栏输入url到显示页面的步骤 5 如何进行网站性能优化 6 HTTP状态码及其含义 7 语义化的理解 8 介绍一下你对浏览器内核的理解? 9 html…

Oracle 创建DBLink

一、查询是否具有创建DBLink的权限select * from user_sys_privs where privilege like upper(%DATABASE LINK%); 二、如果没有&#xff0c;则需要使用 sysdba 角色给用户赋权grant create public database link to dbusername; 三、创建dblink -- 如果创建全局 dblink&am…

Unity之如何使用Localization来实现文本+资源多语言

前言 使用Unity实现本地化&#xff08;Localization&#xff09;功能 在当今的游戏开发中&#xff0c;支持多语言已成为一项基本需求。Unity作为主流的游戏开发引擎&#xff0c;提供了强大的本地化工具&#xff0c;使开发者能够方便地为游戏添加多语言支持。本文将介绍如何在U…

学习整理 docker

nexus 搭建nexus将其他pom、jar导入到nexus中

JavaScript第五讲:事件,条件循环语句,错误处理

前言 在编程的世界里&#xff0c;事件、条件和循环语句、以及错误处理是构建任何复杂程序或应用的基石。无论是开发一个简单的网页交互&#xff0c;还是构建一个庞大的企业级系统&#xff0c;这些基础概念都扮演着至关重要的角色。今天星途将通过这篇文章&#xff0c;分别深入…

DxO PhotoLab 6 for Mac/Win:专业RAW图片编辑的利器

DxO PhotoLab 6 for Mac/Win是一款专为摄影师和摄影爱好者打造的专业RAW图片编辑软件&#xff0c;它将先进的技术、丰富的功能与直观的操作完美结合&#xff0c;为用户提供了一款全面而强大的图片处理工具。 一、技术领先&#xff0c;处理RAW图片更高效 DxO PhotoLab 6采用了…

Redis三种集群方式

文章目录 主从复制哨兵模式Redis Cluster集群codis与redis集群的区别Redis哨兵sentinel集群和Cluster集群区别红锁Redlock Redis有三种集群方式 主从复制&#xff0c;哨兵模式和Redis-Cluster集群。 主从复制 主从复制优缺点 优点&#xff1a; 支持主从复制&#xff0c;主机会…

基于FPGA的数字信号处理:Signed的本质和作用

基于FPGA的数字信号处理中,signed的本质和作用主要体现在对整型变量正负性的定义和运算上。以下是关于signed的详细解释: signed的本质 定义有符号数变量:在FPGA的数字信号处理中,signed关键字用于定义有符号整型变量。这意味着变量可以存储正数和负数,而不仅仅是无符号整…