当前位置: 首页 > news >正文

Git介绍与常用命令总结

Git介绍与其常用命令总结

  • 1、Git介绍
  • 2、Git的使用
  • 3、Git常用命令
    • 3.1 初始化仓库
    • 3.2 克隆仓库
    • 3.3 配置用户信息
    • 3.4 提交代码(Commit)
    • 3.5 推送代码(Push)
    • 3.6 拉取代码(Pull)
    • 3.7 分支(Branch)
    • 3.8 远程仓库(Remote)
    • 3.9 撤销回退本地改动
    • 3.10 更新本地仓库与远程仓库

1、Git介绍

Git是一种分布式版本控制系统,用于跟踪文件的变化并协作开发项目。它由Linus Torvalds在2005年创建,主要用于Linux内核的开发,但现在已经成为许多项目的标准版本控制系统。

关于Git的一些关键概念和基本原理如下:

  • 版本控制: Git跟踪项目文件的变化,以便在不同的时间点恢复、比较或合并这些变化。这使得团队能够协作,同时保留项目历史记录。

  • 分布式系统: 每个协作者都拥有完整的代码仓库,包括完整的版本历史。这使得在没有网络连接的情况下也能够继续工作,并且使得协作更加灵活。

  • 仓库(Repository): Git仓库是包含项目文件和元数据的目录。它包括项目的完整历史记录和所有分支。

  • 工作区(Working Directory):工作区是包含项目文件的目录,可以进行修改和编辑。这是你实际工作的地方。

  • 暂存区(Staging Area):暂存区是一个临时区域,用于存储准备提交的文件。在将文件提交到版本库之前,你需要将它们添加到暂存区。

  • 提交(Commit): 提交是将文件的变化保存到版本库的操作。每个提交都有一个唯一的标识符,称为SHA-1哈希。

  • 分支(Branch):分支是项目的不同线条,每个分支代表一个独立的开发路径。分支可以合并,以将不同的工作合并到一起。

  • 远程仓库(Remote Repository):远程仓库是存储在网络上的项目的镜像,通常是团队共享和协作的中心。

  • 克隆(Clone):克隆是获取远程仓库的拷贝,可以在本地进行开发。

  • 推送(Push):推送是将本地提交上传到远程仓库的操作。

  • 拉取(Pull):拉取是将远程仓库的更新同步到本地仓库的操作。

在这里插入图片描述

Git提供了强大的工具,使团队能够高效地合作,跟踪项目的演变,并处理各种开发场景中的复杂性。通过这些概念和命令,开发者可以更好地管理项目的版本历史,减少冲突,追踪问题,并实现高效的代码协作。

通过Git,开发者可以很轻松地将项目代码推送到Github、Gitee、云效codeup等代码仓库平台,并进行团队协作开发。

2、Git的使用

在Windows系统下,使用Git主要通过从Git官方网站下载安装程序,按照提示安装,并确保选择安装Git Bash

而倘若使用PycharmIDEA等软件,这些集成开发环境(IDE)内置了对Git的支持,并包括了Git的命令行工具,因此可以直接在IDE中进行版本控制操作,而无需额外安装Git Bash。

3、Git常用命令

3.1 初始化仓库

将当前目录初始化为Git仓库:

git init  # 将当前目录初始化为Git仓库:

该命令执行完之后会在当前目录下生成一个.git 的目录文件。这个.git目录是Git版本控制系统的核心,包含了项目的所有版本历史、配置信息和元数据。这个目录的存在标志着该目录已经变成了一个Git仓库

3.2 克隆仓库

根据远程已有的Git仓库的URL地址,将项目从远程拷贝至本地

git clone <repo_url> <local_directory>

参数解释

repo_url:远程Git仓库的URL地址,.git后缀,例如 https://github.com/YuDongPan/Cannonical_Classifier.git
local_directory:拷贝到的本地目录,例如 ./my_project, 表示拷贝到my_project目录下。若不填,则默认拷贝至当前目录下

3.3 配置用户信息

配置Git用户信息是为了在提交历史中标识作者身份。通过设置用户姓名和邮箱,有助于协作、追踪版本历史、增加代码的可追溯性。

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

配置后,在每次提交时,Git都会记录作者的姓名和邮箱。这使得你可以准确地知道谁对项目做出了贡献。配置是全局的,适用于所有Git仓库,有助于建立更有序和可信的版本控制环境。

3.4 提交代码(Commit)

当我们对本地仓库代码进行修改后,欲使得远程仓库代码进行同步更改,我们需要先将修改后的本地代码添加至暂存区(Staging Area)。

git add <filename> # 表示单独添加一个文件
git add . # 表示添加所有文件

若不确定当前目录下的文件添加状况, 可使用以下命令,查询各文件状态:

git status

之后实际提交(Commit)修改的代码至暂存区:

git commit -m "提交说明"

暂存区为每一次 Commit 的代码生成一个 Commit_Hash,使用以下命令,可以很方便追踪到项目的每一次修改记录。

git log

暂存区默认指向最后一次修改后提交的结果

3.5 推送代码(Push)

将本地仓库修改的代码Commit至了暂存区后,便可推送至远程Git仓库了。

git push origin <branch_name>

参数解释:

branch_name: 推送至的分支名称, 一般为master分支,但也可能为main分支或任何用户自定义的分支。

值得注意的是,若没有克隆现有仓库,欲将本地仓库链接到某个远程的Git仓库,则可通过以下命令进行链接:

git remote add origin <repo_url>

3.6 拉取代码(Pull)

git pull 命令用于从远程仓库获取最新的代码并将其合并到当前分支。它实际上是 git fetchgit merge 两个命令的组合。

git pull [<remote_repo>] [<remote_branch>:<local_branch>]

参数详解:

remote_repo:远程仓库。如果没有提供远程仓库,默认会使用远程仓库的 origin。
remote_branch, local_branch: 远程分支与本地分支。如果没有提供远程分支和本地分支,默认会拉取远程分支并与当前分支合并。

  • 获取远程更新 (git fetch)

    git pull 首先会调用 git fetch命令,从远程仓库下载最新的代码、分支等信息。但与 git fetch 不同,git pull 会将这些更新直接合并到当前分支,省去了额外的步骤。

  • 合并到本地分支(git merge)
    git pull 接着会调用 git merge 命令,将从远程仓库下载的最新代码合并到当前分支。

拉取并合并远程分支代码到当前本地分支

git pull origin main

这会从 origin 远程仓库的 main 分支拉取最新代码,并将其合并到当前所在的本地分支。

git pull

如果在 git pull 后不指定远程分支和本地分支,它将默认使用配置中的跟踪分支(通常是当前分支的远程对应分支)。

注意事项:
1、如果当前分支有未提交的更改,git pull 可能会导致冲突。在执行 pull 之前,建议先提交或者撤销本地的更改。
2、当拉取过程中有冲突时,需要手动解决冲突并执行 git pull 继续合并。

3.7 分支(Branch)

在Git中,分支(Branch)是指向某次提交的可移动指针。Git使用分支来管理不同的开发路径,允许在项目中同时进行多个独立的工作。Git中常用的分支类型有以下六种:

  1. 主分支(Master或Main): 通常是项目的默认分支,也是项目的主要开发线
  2. 特性分支(Feature Branch):用于开发新功能,通常从主分支创建。
  3. 开发分支(Development Branch):用于整合不同特性分支的中间分支。
  4. 发布分支(Release Branch):用于准备发布新版本的分支。
  5. 修复分支(Hotfix Branch): 用于紧急修复已发布版本中的bug。
  6. 远程分支(Remote Branch):指向远程仓库的分支,用于跟踪远程仓库的变化。

git branch 命令用于列出、创建、删除或重命名分支。

  • 切换到新分支
git branch

这将显示所有本地分支的列表,当前分支前会有一个 * 号标识。

  • 创建新分支
git branch <new_branch>

这会创建一个新分支,但不会自动切换到新分支。

  • 切换分支
git checkout <branch_name># 或者使用 -b 选项创建并切换到新分支:
git checkout -b <new_branch># 或者使用 `git switch` 命令进行分支切换:
git switch -c <new_branch>
  • 删除分支
git branch -d <branch_name># 这会删除指定的本地分支。如果分支还未合并,需要使用 -D 选项强制删除:
git branch -D <branch_name>
  • 查看远程分支
git branch -r

这会显示远程分支的列表。

  • 查看所有分支(包括远程):
 git branch -a

这会显示本地和远程分支的完整列表。

  • 重命名分支
 git branch -m <old_branch> <new_branch>

注意事项: 分支的创建、切换、删除和重命名等操作都是本地的,如果需要在远程仓库中应用这些变更,需要进行相应的推送和拉取操作。

3.8 远程仓库(Remote)

git remote 命令用于管理与远程仓库的关联。以下是一些常见的 git remote 相关的命令:

  • 查看远程仓库信息
git remote -v

这条命令将显示当前仓库关联的远程仓库信息,包括名称和URL。

  • 添加远程仓库
git remote add <remote_repo_name> <remote_repo_url>

参数解释:

remote_repo_name: 远程仓库名称
remote_repo_url: 远程仓库URL

这条命令将远程仓库添加到本地仓库的远程仓库列表中。

  • 移除远程仓库
git remote remove <remote_repo_name># orgit remote rm <remote_repo_name>

这两条命令可任选一条执行,执行后将从本地仓库的远程仓库列表中移除指定的远程仓库。

  • 查看远程仓库的详细信息
git remote show <remote_repo_name>

此命令用于显示指定远程仓库的详细信息,包括远程分支。

  • 重命名远程仓库
 git remote rename <old_remote_repo_name> <new_remote_repo_name>

此命令将本地仓库中已有的远程仓库重命名。

  • 修改远程仓库的URL
git remote set-url <remote_repo_name> <remote_repo_url>

此命令用于修改已有远程仓库的URL。

  • 拉取远程仓库的更新
git pull <remote_repo_name> <branch_name>

此命令从指定的远程仓库拉取更新并合并到本地分支。

  • 推送本地分支到远程仓库
 git push <remote_repo_name> <local_branch>:<remote_branch>

此命令用于将本地分支的提交推送到指定的远程分支。

3.9 撤销回退本地改动

  • 若我们需要将工作区中某个文件恢复到最近一次 commit 的状态,可使用以下命令:
git checkout -- <filename>

这个命令会用最近一次提交(commit)的版本覆盖工作区中的指定文件,取消对该文件的修改。如果在之前的提交中有对文件的修改,这个命令将会撤销这些修改。

  • 若我们需要将暂存区(Index)中的某个文件撤回到工作区,取消该文件的暂存状态, 可使用以下命令:
git reset HEAD <filename>

这个命令会取消之前使用 git add 将指定文件添加到暂存区的操作,将该文件从暂存区移回到工作区,但不改变工作区文件的实际内容。

  • 将当前分支的 HEAD 指针和工作区都回滚到上一次 commit 的状态。
 - git reset --hard HEAD^

这个命令是一个较为激进的操作,会将当前分支的 HEAD 指针和工作区都重置到上一次的提交(HEAD^ 表示上一个提交)状态。这样会丢弃所有未提交的本地修改,慎用,因为无法撤销。

3.10 更新本地仓库与远程仓库

1. git add . # 将本地代码添加到暂存区
2. git commit -m "second commit" # 提交本地代码到暂存区
3. git remote add origin url # 为远程仓库添加别名origin,并添加仓库url
4. git pull --rebase origin master # 将本地的未推送的提交叠加在从远程拉取的提交之上,避免创建不必要的合并提交                              
5. git push origin master # 将本地的master分支代码提交到远程仓库origin的master分支,将本地的提交同步到远程仓库

相关文章:

Git介绍与常用命令总结

Git介绍与其常用命令总结 1、Git介绍2、Git的使用3、Git常用命令3.1 初始化仓库3.2 克隆仓库3.3 配置用户信息3.4 提交代码(Commit)3.5 推送代码(Push)3.6 拉取代码(Pull)3.7 分支(Branch)3.8 远程仓库(Remote)3.9 撤销回退本地改动3.10 更新本地仓库与远程仓库 1、Git介绍 Gi…...

机器学习 | 探索朴素贝叶斯算法的应用

朴素贝叶斯算法是一种基于贝叶斯定理和特征条件独立假设的分类算法。它被广泛应用于文本分类、垃圾邮件过滤、情感分析等领域&#xff0c;并且在实际应用中表现出色。 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法&#xff1a; 1&#xff09;对于给定的待分类项r…...

【无刷电机学习】电流采样电路硬件方案

【仅作自学记录&#xff0c;不出于任何商业目的】 目录 AD8210 INA282 INA240 INA199 AD8210 【AD8210数据手册】 在典型应用中&#xff0c;AD8210放大由负载电流通过分流电阻产生的小差分输入电压。AD8210抑制高共模电压(高达65V)&#xff0c;并提供接地参考缓冲输出&…...

对于协同过滤算法我自己的一些总结和看法

文章目录 协同过滤算法的基本原理协同过滤算法的分类用户相似度计算UserCF && ItemCF应用场景 协同过滤算法的优缺点优点缺点 协同过滤算法的总结与展望Q&A 协同过滤算法的基本原理 关于协同过滤算法&#xff0c;我看过很多老师写的博客以及一些简单的教程&#x…...

数据库管理phpmyadmin

子任务1-PHPmyadmin软件的使用 本子任务讲解phpmyadmin的介绍和使用操作。 训练目标 1、掌握PHPmyadmin软件的使用方法。 步骤1 phpMyAdmin 介绍 phpmyadmin是一个用PHP编写的软件工具&#xff0c;可以通过web方式控制和操作MySQL数据库。通过phpMyAdmin可以完全对数据库进行…...

Oracle数据表ID自增操作

一、Oracle ID自增长功能介绍 Oracle数据库默认不支持像 SQLServer、MySQL中的自增长&#xff08;auto increment&#xff09;功能&#xff0c;即自动为每一行记录的自增长字段生成下一个值。 二、Oracle ID自增长方法 第一种&#xff0c;通过序列&#xff08;sequence&#…...

npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher

当使用npm下载vue3-lazy时出现一下错误时的解决方案 报错&#xff1a;npm WARN deprecated uuid3.4.0: Please upgrade to version 7 or higher 尝试使用过一下命令更新 npm install uuidlatest -g 是安装了最新版本的uuid&#xff0c; 再次下载已解决问题 ***但看某些播客依…...

第2节、让电机转起来【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用简单的方式&#xff0c;让步进电机转起来。其目的之一是对电机转动有直观的感受&#xff0c;二是熟悉整个开发流程。本系列教程必要的51单片机基础包括IO口操作、中断、定时器三个部分&#…...

1154: 第多少天

题目描述 定义一个包括年、月、日的结构体变量&#xff0c;读入年、月、日&#xff0c;计算该日在当年中是第几天。注意闰年问题。 输入描述 三个整数&#xff0c;分别表示年、月、日。保证输入是实际存在的日期&#xff0c;且年份在1000至3000之间&#xff08;包含1000和30…...

【C语言初阶-const作用详解】const修饰变量、const修饰指针(图文详解版)

少年&#xff0c;做你认为对的事 目录 少年&#xff0c;做你认为对的事 1.const修饰变量 2.const修饰指针&#xff08;重要&#xff09; 代码1&#xff1a; 代码2&#xff1a; 代码3&#xff1a; ​编辑 3.结论 1.const修饰变量 const修饰变量将变量赋予了常量属性…...

线程协作工具类【CountDownLatch倒数门闩、Semaphore信号量、CyclicBarrier循环栏栅、Condition接口】

线程协作工具类 CountDownLatch倒数门闩Semaphore信号量CyclicBarrier循环栅栏CyclicBarrier和CountDownLatch区别: Condition接口(条件对象) 转自 极客时间 线程协作工具类就是帮助程序员更容易的让线程之间进行协作&#xff0c;来完成某个业务功能。 CountDownLatch倒数门闩…...

Python 函数式编程进阶:map、filter、reduce

Python 函数式编程进阶&#xff1a;map、filter、reduce 介绍map 函数作用和语法使用 map 函数Lambda 函数的配合应用 filter 函数作用和语法使用 filter 函数Lambda 函数的结合运用 reduce 函数作用和语法使用 reduce 函数典型应用场景 介绍 在函数式编程中&#xff0c;map、…...

大模型|基础_word2vec

文章目录 Word2Vec词袋模型CBOW Continuous Bag-of-WordsContinuous Skip-Gram存在的问题解决方案 其他技巧 Word2Vec 将词转化为向量后&#xff0c;会发现king和queen的差别与man和woman的差别是类似的&#xff0c;而在几何空间上&#xff0c;这样的差别将会以平行的关系进行表…...

14.2 url后端过滤器(❤❤)

14.2 过滤器 1. 过滤器Filter1.1 配置形式实现过滤器1.2 过滤器生命周期1.3 过滤器特性(面试点)1.4 注解形式实现过滤器1.5 两种实现的选择2. 应用2.1 字符集过滤:统一设置请求与响应字节编码1. 配置方式实现过滤器参数化:init-param标签关键代码完整代码2. 注解方式实现2.2 多…...

Leetcode 377 组合总和 Ⅳ

题意理解&#xff1a; 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 这道题目和凑零钱是一样的&#xff0c;需要求使用指定元素&#xff08;纸币…...

CleanMyMacX4.14.6如何清理mac垃圾内存

一直以来&#xff0c;苹果电脑的运行流畅度都很好&#xff0c;但是垃圾内存多了磁盘空间慢慢变少&#xff0c;还是会造成卡顿的。这篇文章就告诉大家电脑如何清理垃圾内存&#xff0c;电脑如何清理磁盘空间。 一、电脑如何清理垃圾内存 垃圾内存指的是各种缓存文件和系统垃圾…...

Java 学习和实践笔记(1)

2024年&#xff0c;决定好好学习计算机语言Java. B站上选了这个课程&#xff1a;【整整300集】浙大大佬160小时讲完的Java教程&#xff08;学习路线Java笔记&#xff09;零基础&#xff0c;就从今天开始学吧。 在这些语言中&#xff0c;C语言是最基础的语言&#xff0c;绝大多…...

【自然语言处理-工具篇】spaCy<1>--介绍及安装指南

目录 前言 安装指南 pip conda spaCy升级 总结 前言 spaCy是一个开源的自然语言处理库,用于处理和分析文本数据。它提供了许多功能,包括分词、词性标注...

LeetCode树总结

​​​​​​144. 二叉树的前序遍历 递归写法很简单&#xff0c;不再赘述。迭代写法需要用到一个栈&#xff0c;因为是根->左子树->右子树的顺序进行遍历&#xff0c;所以弹出当前结点后要先入栈右儿子&#xff0c;再入栈左儿子。 /*** Definition for a binary tree n…...

AI专题:冬渐去、春将来,待看,AI 开花,数据挂果,可控链潮起

今天分享的是AI 系列深度研究报告&#xff1a;《AI专题&#xff1a;冬渐去、春将来&#xff0c;待看&#xff0c;AI 开花&#xff0c;数据挂果&#xff0c;可控链潮起》。 &#xff08;报告出品方&#xff1a;AVIC&#xff09; 报告共计&#xff1a;36页 行业概览:2023年呈稳…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

链式法则中 复合函数的推导路径 多变量“信息传递路径”

非常好&#xff0c;我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题&#xff0c;统一使用 二重复合函数&#xff1a; z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y))​ 来全面说明。我们会展示其全微分形式&#xff08;偏导…...