Git的正确使用姿势与最佳实践:团队协作和版本控制的最佳实践

news2024/11/26 5:44:07

Git是一个版本控制系统,用于跟踪和管理软件开发项目中的代码变更。它可以追踪文件的修改、添加和删除,并记录这些变更的历史。Git可以帮助团队成员协同开发,并提供了一种有效的方式来处理并发编辑和代码合并。 在这篇文章中,我们将介绍Git的正确使用姿势和最佳实践,以便更好地使用Git来管理代码进行团队协作。

一、Git基本概念

git本地有三个工作域:工作区(working directory), 暂存区(stage/index), 资源库(repository)。如果再算上远程服务器上的git仓库(remote directory)就可以分为四个工作域。其关系如下:

(一)四个工作区

  • Workspace: 工作区,就是你平时存放项目代码的地方
  • Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数 据。其中HEAD指向最新放入仓库的版本
  • Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

(二)工作流程

git工作的一般流程:

  1. 在工作目录中添加,修改文件
  2. 将需要进行版本管理的文件放入暂存区
  3. 将暂存区的文件提交到git仓库

(三)文件的四种状态

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文 件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可 进入暂存staged状态, 使用git checkout 则丢弃修改过,返回到unmodify状态, 这个git checkout即 从库中取出文件, 覆盖当前修改
  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,文件状态为Modified

二、Git基本命令

  • git init :在当前目录下创建一个新的Git仓库。
  • git clone :从远程服务器上克隆一个Git仓库到本地。
  • git add filename :将文件添加到Git仓库的暂存区。
  • git commit :将暂存区中的文件提交到Git仓库。
  • git status : 查看仓库状态
  • git log :查看提交的历史记录
  • git reflog :查看对仓库的操作日志
  • git diff HEAD :比较当前内容与最后一次提交的版本的差异。
  • git checkout filename :放弃对工作区代码的修改。

三、Git分支的操作

在进行多个并行作业时,通常会用到分支。

  • git branch :列出当前所有的分支。
  • git checkout :切换到指定的分支。
  • git merge :将指定分支的代码合并到当前分支中。
  • git rebase :将当前分支的代码变到指定分支上。

四、Git 协作

  • git push :将本地Git仓库中的代码推送到远程服务器上。
  • git pull :从远程服务器上拉取最新的代码。
  • git fetch :从远程服务器上拉取最新的代码。
  • git merge :将远程分支的代码合并到本地分支中。

五、版本发布

每次发布稳定版本时,应该为该版本创建一个标签。标签可以用来标识特定版本的代码,方便日后查找和回溯。创建标签的步骤如下:

  • 切换到主分支:git checkout master
  • 拉取最新的代码:git pull origin master
  • 创建标签:git tag -a v1.0.0 -m "Release version 1.0.0"
  • 推送标签到远程仓库:git push origin --tags

六、远程仓库操作

  1. 生成通信密钥:ssh-keygen -t rsa -C "su@126.com" ,生成的公钥在/home/stu/.ssh/下,如下图。

 2.测试与github或者gitee(码云)有没有连通:

 测试github 的命令 :ssh -T git@github.com

 

 测试gitee 也就是码云的命令 :

3. 克隆项目:git clone 项目地址

4. 提交分支到远程仓库:git push origin 分支名

5. 提交分支到远程仓库,并跟踪分支 :git push -u origin 分支名

6. 拉取远程服务器上的分支更新到本地 :git pull origin 分支名

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

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

相关文章

大数据-玩转数据-Flink

一、说明 在电商网站中,订单的支付作为直接与营销收入挂钩的一环,在业务流程中非常重要。对于订单而言,为了正确控制业务流程,也为了增加用户的支付意愿,网站一般会设置一个支付失效时间,超过一段时间不支…

大数据从入门到放弃——浅谈数据架构的前世今生

文章目录 1. 背景2. 数据的定义及分类2.1 数据的定义2.2 数据的分类2.3 数据和信息的区别 3. 数据的作用4. 数据的那些美好时代4.1 人脑时代4.2 文件时代4.3 数据库时代4.3.1 大服务器时代4.3.2 读写分离时代4.4 数据库的分布式时代4.5 云端时代 5. 数据的未来 1. 背景 随着云时…

excel 核心快捷键用法

1、wps怎样只复制公示计算出来的数据 1.1、按下快捷键“CtrlC”,复制该单元格。 1.2、按下快捷键“ShiftCtrlV”,即“粘贴为数值”,即可只复制数字而不复制该单元格的公式 1.3、wps怎样只复制公示计算出来的数据_百度知道https://zhidao.baid…

【福建事业单位-综合基础知识】05民法典

这里写自定义目录标题 一、民法概述概念原则总结 二、自然人概念总结 三、民事法律行为总结 民法考察2-4题(重点总则篇) 一、民法概述 概念原则 总结 二、自然人 概念 总结 三、民事法律行为 总结

【python】正则表达式

本文介绍正则表达式常用的用法。 有哪些正则字符 正则表达式中有各种各样的正则字符,用于匹配不同情况下的字符串。具体如下: 使用 re 模块进行字符串匹配 比如,我们要从 ‘Xiaoshuaib has 100 bananas’ 中匹配一个数字,可…

Zoho Books的安全性和数据保护:财务信息安全的保障措施揭秘

在信息化时代,如何保障企业信息安全是十分重要的问题,尤其是财务信息。财务管理工具的安全性是否有保障是许多用户担心的问题。 Zoho Books财务管理工具为客户提供了一系列的数据保护和安全措施,以确保客户财务信息的安全。 1. 采用高度加密…

漏洞指北-VluFocus靶场专栏-工具篇

漏洞指北-VluFocus靶场专栏-番外篇奇技淫巧 🌸1、burp suite 、中国蚁剑工具、Strut2扫描软件地址🌸🌸2、burp suite使用🌸step1 浏览器开启代理,**推荐使用:SwitchyOmega** step2 确认浏览器端口和burp su…

LeetCode 542. 01 Matrix【多源BFS】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

栈空间和栈帧

如图所示,栈空间是每个线程私有的,其中每个方法有一个栈帧,里面保存了局部变量 返回地址等信息。 如果是多线程,每个线程都会有一个栈空间。 多线程切换的时候需要保存局部变量、当前的地址等信息。 线程上下文切换的时机&…

mybatis入门Idea搭建

一、概念 1、什么是mybatis? MyBatis是一个开源的Java持久层框架,它提供了一种简化数据库访问的方式。它的主要作用是将Java对象与数据库表之间进行映射,使开发者可以通过面向对象的方式操作数据库,而不需要编写大量的SQL语句。M…

线性代数的学习和整理5: 矩阵的加减乘除及其几何意义(未完成,建设ing)

目录 1 矩阵加法 1.1 矩阵加法的定义 1.2 加法的属性 1.2.1 只有同类型,相同n*m的矩阵才可以相加 1.2.1 矩阵加法的可交换律: 1.2.2 矩阵加法的可结合律: 1.3矩阵加法的几何意义 2 矩阵的减法 2.1 矩阵减法定义和原理基本同 矩阵的…

前端学习记录~2023.8.3~JavaScript重难点实例精讲~第5章 DOM与事件

第 5 章 DOM与事件 前言5.1 DOM选择器5.1.1 传统原生JavaScript选择器(1)通过id定位(2)通过class定位(3)通过name属性定位(4)通过标签名定位 5.1.2 新型的querySelector选择器和quer…

虚拟内存机制1

虚拟内存机制 计算机的存储系统 为什么要有虚拟内存? 在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。当运行多个程序时,经常会出现以下问题: 进程地址空…

2022年国考行政执法卷-判断推理

去掉重复题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 类比推理 例题 例题 例题 例题 例题 例题

【汇编语言】CS、IP寄存器

文章目录 修改CS、IP的指令转移指令jmp问题分析 修改CS、IP的指令 理论:CPU执行何处的指令,取决于CS:IP应用:程序员可以通过改变CS、IP中的内容,进行控制CPU即将要执行的目标指令;问题:如何改变CS、IP中的…

go: go.mod file not found in current directory or any parent directory.

go version go 1.20.7 go 1.17 以后都是用 go install 命令 D:\Go\bin\go.exe get -u github.com/nsf/gocode D:\Go\bin\go.exe get -u golang.org/x/tools/cmd/guru D:\Go\bin\go.exe get -u github.com/rogpeppe/godef>> Running: D:\Go\bin\go.exe get -u github.com…

Kubernetes_Scheduler_资源调度

文章目录 一、前言二、k8s 资源模型2.1 Node 资源抽象2.1.1 Capacity2.1.2 Allocatable2.1.3 Allocated 2.2 Node 资源切分(预留)2.2.1 SystemReserved2.2.2 KubeReserved2.2.3 EvictionThreshold(驱逐门限)2.2.4 Allocatable 2.3…

二叉树搜索

✅<1>主页&#xff1a;我的代码爱吃辣&#x1f4c3;<2>知识讲解&#xff1a;数据结构——二叉搜索树☂️<3>开发环境 &#xff1a;Visual Studio 2022&#x1f4ac;<4>前言&#xff1a;在之前的我们已经学过了普通二叉树&#xff0c;了解了基本的二叉树…

Spring(四):Spring Boot 的创建和使用

关于Spring之前说到&#xff0c;Spring只是思想&#xff08;核心是IOC、DI和AOP&#xff09;&#xff0c;而具体的如何实现呢&#xff1f;那就是由Spring Boot 来实现&#xff0c;Spring Boot究竟是个啥呢&#xff1f; 什么是Spring Boot&#xff0c;为什么要学Spring Boot Sp…