Git的基本使用

目录

一.Git的简介

1.1 Git与SVN的区别(优势与劣势)

 1.2 Git的工作流程

 二.Git的安装及常用命令

2.1 使用前准备

​编辑

​编辑

2.2 在Windows中安装Git

官网链接

Git - Downloadshttps://git-scm.com/downloads

2.3 Git的常用命令

三、Git命令的理论 


一.Git的简介

分布式版本控制: Git 是分布式的,这意味着每个开发人员都拥有完整的代码库的副本,而不是依赖于集中式服务器。这使得开发人员能够独立工作,并在没有网络连接的情况下进行版本控制操作。

代码仓库: Git 使用仓库来存储代码和版本历史。一个仓库包含所有的代码、分支、提交历史以及配置信息。

提交(Commit): 提交是 Git 中的基本操作,它代表了代码库的一个快照,包括一组修改和相关的提交信息。提交是不可更改的,每个提交都有一个唯一的哈希标识。

分支(Branch): 分支是指代码库中的不同开发线,允许开发人员在不影响主要代码线的情况下进行独立的开发。Git 的分支操作非常高效,允许轻松创建、合并和删除分支。

合并(Merge): 合并是将一个分支的更改合并到另一个分支的操作。Git 提供了多种合并策略,以确保代码被合并到目标分支时不会引入冲突。

远程仓库(Remote Repository): 远程仓库是分布式团队协作的关键,它允许开发人员协同工作、共享代码,并在不同的位置之间同步代码。

克隆(Clone): 克隆是从远程仓库创建一个本地副本的过程。通过克隆,开发人员可以开始在自己的计算机上工作。

拉(Pull)和推(Push): 拉操作用于将远程仓库的更改同步到本地仓库,而推操作用于将本地更改上传到远程仓库。

标签(Tag): 标签是对特定提交的符号引用,通常用于标识版本或重要的里程碑。
 

1.1 Git与SVN的区别(优势与劣势)

Git:

分布式版本控制: Git 是分布式版本控制系统,每个开发人员都拥有完整的代码库的副本。这允许离线工作、灵活的分支和合并,以及更好的协作。

速度: Git 在性能方面表现出色,因为它本地存储数据并使用快速的算法来处理操作。这使得 Git 在操作大型代码库时更加高效。

分支和合并: Git 的分支和合并操作非常轻松,允许开发人员创建、切换和合并分支,促进并行开发和实验性工作。

完整的历史记录: Git 记录每个提交的完整历史记录,包括修改的文件内容。这提供了更丰富的信息,有助于问题追踪和代码审查。

稳定性: Git 非常稳定,广泛用于许多大型开源项目和企业项目。

Git 的优势:

分布式架构,适合分散团队和离线工作。
高性能和快速的操作。
强大的分支和合并支持,鼓励并行开发。
完整的历史记录和内容级别的跟踪,有助于问题排查。
大型开源项目广泛采用。


Git 的劣势:

学习曲线较陡峭,对初学者来说可能有一些挑战。
由于分布式性质,可能需要更多的存储空间。
 

SVN (Subversion):

集中式版本控制: SVN 是集中式版本控制系统,代码库存储在中央服务器上,开发人员需要从服务器检出代码。这种方式限制了分支和合并的灵活性。

文件级别历史记录: SVN 跟踪文件级别的历史记录,而不是 Git 的内容级别。这在一些情况下可能导致信息不够详细。

传统文件锁定: SVN 支持文件锁定来避免多人同时编辑同一文件,但这也限制了并行开发的灵活性。

相对简单: SVN 相对来说更容易学习和使用,因此对于一些团队和项目来说可能更适合。

SVN 的优势:

  • 相对容易上手,适合初学者。
  • 文件锁定机制有助于避免冲突。
  • 适合一些传统开发工作流程。

SVN 的劣势:

  • 集中式架构可能导致单点故障。
  • 分支和合并支持较弱,可能导致工作流程不够灵活。
  • 文件级别历史记录和跟踪限制了问题排查的详细程度。

 综合来看,Git 在许多现代开发场景中更受欢迎,特别是对于需要分布式开发、高性能和复杂工作流程的项目。然而,SVN 仍然在某些传统或较小规模的项目中有其用武之地,特别是对于那些更简单的版本控制需求。选择 Git 还是 SVN 取决于项目的具体要求和团队的工作流程。

 1.2 Git的工作流程

Git的工作流程主要涉及以下几个关键概念:工作区(Working Directory)、暂存区(Staging Area)、本地仓库(Local Repository)和远程仓库(Remote Repository)。下面是Git的基本工作流程:

初始化仓库:

使用git init命令在本地目录中初始化一个新的Git仓库。
进行修改:

在工作区进行代码编辑和修改。
暂存文件:

使用git add <file>命令将修改的文件添加到暂存区。
可以多次使用git add命令添加不同的文件。
提交变更:

使用git commit -m "<message>"命令将暂存区的文件提交到本地仓库。
每次提交都会创建一个新的提交记录,记录了文件的变更和提交说明。
查看提交历史:

使用git log命令查看提交历史,包括每个提交的作者、时间和提交说明。
分支管理:

使用git branch命令查看所有分支,并使用git checkout <branch>命令切换到不同的分支。
使用git merge <branch>命令合并不同分支的修改。
远程仓库交互:

使用git remote add <name> <url>命令关联本地仓库和远程仓库。
使用git push <remote> <branch>命令将本地提交推送到远程仓库。
使用git pull <remote> <branch>命令从远程仓库获取最新的提交记录并合并到本地仓库。
冲突解决:

当多个人同时修改同一文件的同一部分时,可能会发生冲突。
使用合适的工具(如编辑器或Git客户端)解决冲突,并使用git add命令将解决后的文件标记为已解决。
使用git commit命令提交解决冲突的文件。
 

 二.Git的安装及常用命令

2.1 使用前准备

注册一个Gitee账号

注册好后登录

创建账号之后创建一个仓库。点击右上角的+号,并且点击新建仓库。如下: 

这里只有填入仓库的名称和选择开源之后,就直接创建仓库即可,点击创建,如下:

 

创建完成后,会有简易的命令行入门教程,如:Git 全局设置,创建 git 仓库,已有仓库?

将这些命令全部复制到一个文本文件中进行保存。如下:

先建立一个文件夹

 右键出现刚刚下载的两个文件

打开窗口后,分别将Git 全局设置的命令输入其中分别执行一次。如下:

 

执行完后,查看本地用户下有没有 .gitconfig 的这个文件,打开看看,和我们的信息是一样的

就OK了。如下:

 

之后根据 创建 git 仓库的命令,先创建仓库,在进入仓库,进入后将该仓库标记为Git管理的仓库,如下:

标记后创建的仓库本地文件夹中会有个隐藏文件,如图  :

之后进行根据创建 git 仓库的命令,创建一个文件,再将文件给Git管理,之后查看状态

看到如图所示说明已经给Git管理,如果是红色说明没有。具体操作如下:

2.2 在Windows中安装Git

官网链接

找到自己需要的版本,然后傻瓜式安装,一直下一步

Git - Downloadsicon-default.png?t=N7T8https://git-scm.com/downloads

 下载完成后,在文件资源管理器中右键出现如图中,两个选项就说明安装成功。

2.3 Git的常用命令

以下是一些常用的 Git 命令及其功能:

git init:在目录中初始化一个新的 Git 仓库。

git clone:从远程仓库克隆代码到本地。

git add:将文件或目录的更改添加到暂存区,准备提交。

git commit:提交暂存区中的更改到本地仓库。

git status:查看工作目录、暂存区和本地仓库的状态。

git log:查看提交历史记录。

git diff:比较工作目录中的更改与暂存区或本地仓库中的内容。

git branch:列出本地分支,或创建新分支。

git checkout:切换分支或还原文件。

git merge:合并一个分支的更改到当前分支。

git pull:从远程仓库拉取并合并更改。

git push:将本地更改推送到远程仓库。

git remote:管理远程仓库的别名。

git fetch:从远程仓库获取最新信息,但不合并。

git reset:重置当前分支到指定的提交。

git rebase:将当前分支的更改在另一个分支的基础上重新应用。

git tag:创建、列出或删除标签,用于标识特定提交。

git stash:暂存当前工作目录的更改,以便在另一个分支上工作。

git blame:显示每行代码的最后一次修改及作者信息。

git config:配置 Git 的各种选项,包括用户信息、别名等。
 

三、Git命令的理论 

git init:初始化一个新的Git仓库。

创建一个新的本地Git仓库,用于存储项目的版本历史和文件变更。
git clone <repository>:克隆一个远程仓库到本地。

从远程仓库中复制所有历史和文件到本地,创建一个与远程仓库相同的副本。
git add <file>:将文件添加到暂存区。

将指定文件的当前版本添加到Git的暂存区中,以准备提交到版本历史中。
git commit -m "<message>":将暂存区的文件提交到版本历史中。

创建一个新的版本记录,包含了暂存区中所有文件的当前状态,并附带一条简短的说明信息。
git push:将本地的版本历史推送到远程仓库。

将本地仓库中的最新版本推送到与之关联的远程仓库中,实现版本同步和团队协作。
git pull:从远程仓库拉取最新的版本到本地。

从与当前分支关联的远程仓库中获取最新的版本记录和文件变更,并自动合并到本地仓库。
git branch:列出所有分支。

显示当前仓库中包含的所有分支,以及当前所在的分支。
git checkout <branch>:切换到指定的分支。

切换当前工作目录到指定分支,并更新工作区中的文件以符合该分支中最新的版本记录。
git merge <branch>:将指定分支合并到当前分支。

将指定的分支合并到当前分支,将两个分支的修改组合在一起并创建一个新的提交记录。
git log:显示当前分支的版本历史。

显示当前分支中所有提交记录的详细信息,包括作者、提交时间、说明等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人工智能-卷积神经网络之多输入多输出通道

多输入多输出通道 每个图像的多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来代表红、绿和蓝。 但是到目前为止&#xff0c;我们仅展示了单个输入和单个输出通道的简化例子。 这使得我们可以将输入、卷积核和输出看作二维张量。 当我们添加通道时&#xff0c;我们的输…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(二)

新增员工功能开发 1. 新增员工1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.2 代码开发1.2.1 设计DTO类1.2.2 Controller层1.2.3 Service层接口1.2.4 Service层实现类1.2.5 Mapper层 1.3 功能测试1.3.1 接口文档测试 1.4 代码完善1.4.1 问题一1.4.2 问题二1.…

H5网页漫画小说苹果cms模板源码/支持对接公众号/支持三级分销

H5网页漫画小说苹果cms模板源码&#xff0c;支持对接公众号、支持三级分销&#xff0c;评论、收藏、历史记录、三级分销。 独有的模板搜索功能&#xff0c;微信、qq防红&#xff0c;站外采集接口、记录阅读章节&#xff0c;SEO优化&#xff08;后台配置&#xff09;&#xff0…

16.字符连接

#include<stdio.h> #include <cstring> int main(){char s1[44];char s2[33];scanf("%s",s1);scanf("%s",s2);strcat(s1,s2) ;printf("连接两个字符为&#xff1a;%s ",s1); return 0;}

Java数据的基本(原始)类型和引用类型的特点差别

本文作为“Java数据类型”一文的补充https://blog.csdn.net/cnds123/article/details/110517272 Java的数据类型可以分为基本类型&#xff08;primitive types&#xff09;和引用类型&#xff08;reference types&#xff09;两大类。在实际编程中&#xff0c;要根据需求选择合…

MySQL json相关函数详解

MySQL提供了一系列的JSON函数&#xff0c;用于解析、提取、修改和操作JSON数据。以下是一些常用的JSON函数及其功能。 以下所有操作都使用该表&#xff08;zone_test&#xff09;用来演示&#xff1a; 一&#xff1a;JSON_OBJECT(key1,value1,key2,value2) 1、作用&#xff1a;…

​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第1章-绪论-思维导图】 课本里章节里所有蓝色字体的思维导图

Read Completion Boundary (RCB)切分规则

Read Completion Boundary(RCB) 切分规则 Read Completion Boundary(RCB) 简介 当Read Completion 包含multi-completions时&#xff0c;RCB 规定了多个Completions地址的align规则。Spec中规定RCB可以是64 Byte或者128 Byte&#xff0c;该值可以在link_control register中得…

Unity随笔:C#运行时

Unity是如何编译运行C#的 &#xff08;1&#xff09;Unity会通过编译器将C#脚本编译成IL指令。 Unity会通过Roslyn来对C#代码进行编译&#xff0c;生成中间IL指令集。 当我们每次修改或者添加新的C#代码文件&#xff0c;Unity界面的右下角会出现短暂的“转圈”现象。这就意味…

PTE-RA总结

目录 FIBW刷题记录 1.The Plains Indians were people who did not like 2.An economic depression is a period of sustained 3.Pidgins are languages that are born after contact between 4.It is tempting to try to prove that good looks 5.The stock of Austral…

chrome安装vue devtools

不能访问应用商店 如果可以访问应用商店可以往下看 插件源代码 选择shell-chrome&#xff0c;这是官方的插件源码 下载源代码打包 参考教程 点击扩展按钮->管理扩展程序->打开开发者模式->把crx文件拖拽进去即可 可以访问chrome应用商店 插件地址 官方文档地址 选…

15.数组逆置【不是为啥我第四行不太对呢?】

#include<stdio.h>int fun(int a[4][4]){int i,j;int b[4][3];} int main(){int i,j;int a[3][4], b[4][3];for (i0;i<3;i)for(j0;j<4;j)scanf("%d",&a[i][j]);for (i0;i<3;i)for(j0;j<4;j)b[j][i]a[i][j];printf("逆置后&#xff1a;\n&…

Voice Control for ChatGPT简单高效的与ChatGPT进行交流学习。

快捷又不失灵活性 日常生活中&#xff0c;我们与亲人朋友沟通交流一般都是喜欢语音的形式来完成的&#xff0c;毕竟相对于文字来说语音就不会显的那么的苍白无力&#xff0c;同时最大的好处就是能解放我们的双手吧&#xff0c;能更快实现两者间的对话&#xff0c;沟通便更高效…

STM32 堆栈空间分布

参考 运行时访问__initial_sp和__heap_base 无RTOS时的情况 在以上配置的情况下&#xff0c;生成工程。在工程的startup.s文件中&#xff0c;由如下代码&#xff1a; Stack_Size EQU 0x400AREA STACK, NOINIT, READWRITE, ALIGN3 __Stack_top ; 自己添加 Stack_Mem…

MySQL代码子查询续集

dept表&#xff1a; emp表&#xff1a; -- 查询每个部门的信息(包括&#xff1a;部门名&#xff0c;编号&#xff0c;地址)和人员数量 -- 1.将两张表结合起来&#xff0c;筛选出部门名&#xff0c;编号&#xff0c;地址 tips: 表.* 表示将该表所有列都显示出来&#xff…

获取请求IP以及IP解析成省份

某些业务需要获取请求IP以及将IP解析成省份之类的&#xff0c;于是我写了一个工具类&#xff0c;可以直接COPY /*** IP工具类* author xxl* since 2023/11/9*/ Slf4j public class IPUtils {/*** 过滤本地地址*/public static final String LOCAL_ADDRESS "127.0.0.1&quo…

VUE获取当前日期的周日和周六

<template><div><div @click="handleLast()">上一周</div><div @click="handleNext()">下一周</div><el-calendarref="monChild"v-model="value":first-day-of-week="7":range=&q…

React进阶之路(二)-- 组件通信、组件进阶

文章目录 组件通信组件通信的意义父传子实现props说明子传父实现兄弟组件通信跨组件通信Context通信案例 React组件进阶children属性props校验组件生命周期 组件通信 组件通信的意义 组件是独立且封闭的单元&#xff0c;默认情况下组件只能使用自己的数据&#xff08;state&a…

2022年接口测试总结【温故知新系列】

本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1…

Spring Gateway基础知识总结

本文主要总结Spring Gateway的基础用法&#xff0c;内容包括网关、Spring Gateway工作流程、Spring Cloud Gateway搭建、路由配置方式、负载均衡实现、断言工厂这几个部分 目录 1. 网关 1.1 网关介绍 1.2 网关对比 1.3 Spring Gateway 1.4 核心概念 1.6 总结 2. Spring …