Git介绍与常用命令总结

news2025/2/4 3:57:54

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>

# or

git 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分支,将本地的提交同步到远程仓库

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

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

相关文章

编程流程图

对于复杂流程&#xff0c;我做开发之前一般会 先画一下流程图。特别是多个部门有交叉的情况下&#xff1a; processOn&#xff1a; 这个是我之前 一直的选择&#xff0c;他可以画上面的这些&#xff0c;流程图&#xff0c;网页操作&#xff0c;但是他不是免费的&#xff0c;查过…

【LVGL环境搭建】

LVGL环境搭建 win模拟器环境搭建一.二.三.四.五. Ubuntu模拟器环境搭建一. 前置准备二. 下载LVGL Source code&#xff1a;三. 安装sdl2&#xff1a;四. 开启VScode执行五. 安装扩展套件六. 按F5执行七. 执行结果 win模拟器环境搭建 一. 二. 三. 四. 五. Ubuntu模拟器环境…

同城上门预约软件开发:改变生活服务模式

随着互联网技术的飞速发展&#xff0c;人们的生活方式也在发生着深刻的变化。特别是在生活服务领域&#xff0c;新的需求和模式不断涌现。其中&#xff0c;同城上门预约服务正逐渐成为一种新的趋势。本文将探讨开发同城上门预约软件的意义、市场需求、功能设计以及面临的挑战。…

C++类和对象入门(一)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、面相过程和面向对象的初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#…

大语言模型之LlaMA系列-LlaMA 2及LlaMA_chat(下)

多转一致性的系统消息 - System Message for Multi-Turn Consistency 在对话设置中&#xff0c;某些指示应适用于所有对话轮次。 例如&#xff0c;简洁地响应&#xff0c;或"充当"某个公众人物。当我们向Llama 2-Chat提供此类指示时&#xff0c;后续应响应始终遵守约…

专业139总分400+南昌大学811信号与系统考研经验电子信息与通信工程集成电路

今年专业课811信号与系统139分&#xff0c;总分400&#xff0c;顺利上岸南昌大学&#xff0c;回首这一年的复习&#xff0c;有很多经验想和大家分享&#xff0c;希望对大家复习会有一些帮助。专业课&#xff1a;139分&#xff0c;811信号与系统 主要参考书&#xff1a;《信号与…

2024年人工智能应用与先进制造科学国际学术会议(ICAIAAMS 2024)

2024年人工智能应用与先进制造科学国际学术会议(ICAIAAMS 2024) 2024 International Conference on Artificial Intelligence Applications and Advanced Manufacturing Science (ICAIAAMS 2024) 会议简介&#xff1a; 2024年人工智能应用与先进制造科学国际学术会议&#xff…

C语言基础:头歌练习数组练习

&#xff08;字符串插入&#xff09; 任务描述 题目描述:输入两个字符串a和b&#xff0c;将b串中的最大字符插入到a串中最小字符后面。 样例输入&#xff1a; MynameisAmy MynameisJane 样例输出&#xff1a; MynameisAymy 题目分析&#xff1a;a字符串中最小的字符是A…

黑马程序员——html css基础——day06——Flex布局

目录&#xff1a; 小米登录 第一步搭建大盒子logo设置标题和input设置密码框和登录按钮完整写法&#xff1a;爱宠案例 大盒子dog搭建h2标题的做法ul布局修改li和a链接的样式给li添加背景图片完整的写法&#xff1a;标准流浮动 基本使用产品区域布局 左右布局区域小li布局清除浮…

天拓四方:边缘计算网关功能、特点与应用举例

传统的数据处理方式面临网络延迟、带宽限制和安全风险等问题。为了解决这些问题&#xff0c;边缘计算技术应运而生&#xff0c;而边缘计算网关作为其核心组件&#xff0c;正发挥着越来越重要的作用。边缘计算网关位于数据源和云数据中心之间。它具备数据采集、协议转换、数据处…

极限挑战:使用 Go 打造百亿级文件系统的实践之旅

JuiceFS 企业版是一款为云环境设计的分布式文件系统&#xff0c;单命名空间内可稳定管理高达百亿级数量的文件。 构建这个大规模、高性能的文件系统面临众多复杂性挑战&#xff0c;其中最为关键的环节之一就是元数据引擎的设计。JuiceFS 企业版于 2017 年上线&#xff0c;经过…

Istio-解决Zipkin对项目的侵入性问题

Istio采用SideCar模式注入的Enovy代理在某些情况下不能完全解决对项目的无侵入性&#xff0c;比如需要用到Istio的链路追踪功能的时候。需要在代码中手动注入链路追踪需要的header&#xff0c;这样就出现了Istio对业务功能的侵入性。 istio服务网格的调用链跟踪需要依赖在服务之…

鸿蒙ArkUI日期选择组件

鸿蒙ArkUI日期选择组件&#xff0c;基于基础组件进行的二次封装的日期选择组件&#xff0c;快速实现日期选择。 /*** 日期*/ Component export default struct DiygwDate{//绑定的值Link Watch(onValue) value:string;// 隐藏值State valueField: string value;// 显示值Sta…

探索Gin框架:Golang使用Gin完成文件上传

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 在之前的文章中&#xff0c;我们讲解了Gin框架的快速入门使用&#xff0c;今天我们来聊聊如何使用…

【2024美赛】A题(中英文):资源可用性与性别比例Problem A: Resource Availability and Sex Ratios

【2024美赛】A题&#xff08;中英文&#xff09;&#xff1a;资源可用性与性别比例Problem A: Resource Availability and Sex Ratios 写在最前面2024美赛翻译 —— 跳转链接 中文赛题问题A&#xff1a;资源可用性与性别比例需要检查的问题包括&#xff1a; 英文赛题Problem A:…

惊鸿一瞥-网络初识

&#x1f495;"Echo"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;惊鸿一瞥-网络初识 一.网络的发展过程 网络的发展过程是循序渐进的,大致可以分为四个阶段: 单机时代->局域网时代->广域网时代->互联网时代 单机时代:就是每个机器之间…

如何在CentOS安装DataEase数据分析服务并实现远程访问管理界面

如何在CentOS安装DataEase数据分析服务并实现远程访问管理界面 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 202…

Pytroch 自写训练模板适合入门版 包含十五种经典的自己复现的一维模型 1D CNN

训练模板 在毕业之前&#xff0c;决定整理一下手头的代码&#xff0c;自己做1D-CNN这吗久&#xff0c;打算开源一下自己使用的1D-CNN的代码&#xff0c;包括用随机数生成一个模拟的数据集&#xff0c;到自己写的一个比较好的适合入门的基础训练模板&#xff0c;以及自己复现的…

【大厂AI课学习笔记】1.4 算法的进步(2)

关于感知器的兴衰。 MORE&#xff1a; 感知器的兴衰 一、感知器的发明与初期振动 在人工智能的历史长河中&#xff0c;感知器&#xff08;Perceptron&#xff09;无疑是一个里程碑式的存在。它最初由心理学家Frank Rosenblatt在1950年代提出&#xff0c;并在随后的几年中得到…

8. Threejs案例-SVG渲染器和WEBGL渲染器对比

8. Threejs案例-SVG渲染器和WEBGL渲染器对比 实现效果 知识点 SVG渲染器 (SVGRenderer) SVGRenderer 被用于使用 SVG 来渲染几何数据&#xff0c;所产生的矢量图形在以下几个方面十分有用&#xff1a; 动画标志 logo 或者图标 icon可交互的 2D 或 3D 图表或图形交互式地图复…