彻底掌握 Git:从零基础到高级实战的全方位教程

文章目录

      • 一、Git 简介
      • 二、安装 Git
        • 1. Windows
        • 2. macOS
        • 3. Linux
      • 三、Git 基本概念
      • 四、初次使用 Git
        • 1. 配置 Git
        • 2. 创建一个新的 Git 仓库
        • 3. 克隆一个远程仓库
        • 4. 跟踪文件
        • 5. 提交变更
        • 6. 查看历史记录
      • 五、Git 分支管理
        • 1. 创建和切换分支
        • 2. 合并分支
        • 3. 分支冲突
      • 六、远程仓库
        • 1. 添加远程仓库
        • 2. 推送到远程仓库
        • 3. 拉取远程更新
        • 4. 克隆远程仓库
      • 七、Git 高级功能
        • 1. Git 标签
        • 2. Git Stash
        • 3. Git Rebase
      • 八、常见问题及解决方法
        • 1. 忘记添加 .gitignore 文件
        • 2. 恢复被删除的分支
        • 3. 撤销最近的提交
      • 九、实践项目

在这里插入图片描述

一、Git 简介

在现代软件开发中,版本控制系统(VCS)是不可或缺的工具,它帮助开发者管理代码的变更,协作开发,并保持项目的历史记录。Git 是目前最流行的分布式版本控制系统之一,广泛应用于开源和企业项目中。本文将带你从零开始,深入了解Git,掌握从基本操作到高级功能的使用方法。

Git 是由林纳斯·托瓦兹(Linus Torvalds)于2005年开发的分布式版本控制系统。它的设计初衷是为了更好地管理 Linux 内核开发,但由于其强大的功能和灵活性,迅速成为各类项目的首选版本控制工具。

Git 的特点包括:

  • 分布式:每个开发者的工作目录都是一个完整的仓库,包含了项目的完整历史记录。
  • 高效:Git 在处理大文件和项目时表现出色,速度快且资源占用低。
  • 灵活:支持多种开发流程和工作模式,适应不同团队和项目的需求。
  • 安全:通过哈希值(SHA-1)确保代码的完整性和安全性。

二、安装 Git

1. Windows
  1. 下载 Git for Windows 安装包:访问 Git官网 下载适用于 Windows 的安装包。
  2. 运行安装程序,按提示完成安装。安装过程中可以选择使用默认设置,或者根据需求进行自定义配置。
2. macOS
  1. 使用 Homebrew 安装(推荐):在终端中运行以下命令:
    brew install git
    
  2. 直接从 Git 官网下载并安装:访问 Git官网 下载适用于 macOS 的安装包。
3. Linux
  1. 使用包管理器安装:
    • Debian/Ubuntu:
      sudo apt-get update
      sudo apt-get install git
      
    • Fedora:
      sudo dnf install git
      
    • Arch Linux:
      sudo pacman -S git
      

三、Git 基本概念

在使用 Git 之前,需要理解一些基本概念:

  • 仓库(Repository):一个包含了项目的所有文件和历史记录的目录。
  • 工作目录(Working Directory):你当前正在工作的项目文件目录。
  • 暂存区(Staging Area):一个临时存放变更的区域,你可以在提交之前先将变更添加到暂存区。
  • 提交(Commit):将暂存区中的变更记录保存到仓库中,形成一个新的提交记录。
  • 分支(Branch):项目开发的平行版本,你可以在不同分支上进行不同的开发工作。
  • 远程仓库(Remote Repository):存储在网络上的仓库,可以与本地仓库进行同步。

四、初次使用 Git

1. 配置 Git

安装 Git 后,首先需要进行一些基本配置。使用以下命令配置用户名和邮箱:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
2. 创建一个新的 Git 仓库

在现有项目目录中初始化一个新的 Git 仓库:

cd /path/to/your/project
git init

这会在项目目录中创建一个名为 .git 的隐藏文件夹,包含了所有 Git 相关的数据。

3. 克隆一个远程仓库

如果你需要从远程仓库开始,可以使用 git clone 命令:

git clone https://github.com/user/repository.git

这会在当前目录下创建一个新的目录,包含了远程仓库的所有文件和历史记录。

4. 跟踪文件

要开始跟踪一个文件,首先将其添加到暂存区:

git add filename

你也可以使用通配符一次添加多个文件:

git add .
5. 提交变更

将暂存区中的变更提交到仓库:

git commit -m "描述你的变更"

每次提交都会生成一个唯一的提交ID,记录下所有变更和相关信息。

6. 查看历史记录

使用以下命令查看项目的提交历史:

git log

五、Git 分支管理

1. 创建和切换分支

创建一个新的分支:

git branch new-branch

切换到新分支:

git checkout new-branch

你也可以在创建新分支的同时切换过去:

git checkout -b new-branch
2. 合并分支

将指定分支合并到当前分支:

git merge branch-name
3. 分支冲突

在合并分支时,如果两个分支修改了同一个文件的同一部分,就会产生冲突。Git 会提示你手动解决冲突,并标记冲突部分:

<<<<<<< HEAD
当前分支的变更
=======
要合并分支的变更
>>>>>>> branch-name

解决冲突后,使用 git add 将修改标记为解决状态,然后提交:

git add conflicted-file
git commit -m "解决冲突"

六、远程仓库

1. 添加远程仓库

添加一个远程仓库:

git remote add origin https://github.com/user/repository.git
2. 推送到远程仓库

将本地分支推送到远程仓库:

git push origin branch-name
3. 拉取远程更新

从远程仓库拉取更新并合并到当前分支:

git pull origin branch-name
4. 克隆远程仓库

使用 git clone 克隆远程仓库到本地:

git clone https://github.com/user/repository.git

七、Git 高级功能

1. Git 标签

标签用于为仓库中的特定提交打标签,通常用于标记版本发布点。

创建一个轻量标签:

git tag tagname

创建一个附注标签:

git tag -a tagname -m "描述信息"

推送标签到远程仓库:

git push origin tagname
2. Git Stash

在开发过程中,你可能需要临时切换分支,但又不想提交当前的变更。这时可以使用 git stash 将未提交的改动暂存起来。

暂存当前工作:

git stash

恢复暂存的工作:

git stash pop
3. Git Rebase

git rebase 用于将一个分支上的所有提交应用到另一个分支之上。

git checkout feature-branch
git rebase master

八、常见问题及解决方法

1. 忘记添加 .gitignore 文件

如果在创建项目时忘记添加 .gitignore 文件,可以在后续补充:

echo "node_modules/" >> .gitignore
git rm -r --cached .
git add .
git commit -m "添加 .gitignore 文件"
2. 恢复被删除的分支

如果误删了一个分支,可以使用以下命令恢复:

git checkout -b branch-name commit-id
3. 撤销最近的提交

如果最近的一次提交有误,可以撤销:

git reset --soft HEAD~1

九、实践项目

通过以下几个项目来巩固你的 Git 技能:

1. 个人博客

使用 Jekyll 或 Hugo 等静态网站生成器搭建一个个人博客,管理博客内容和源代码。

2. 开源贡献

选择一个感兴趣的开源项目,克隆仓库,创建分支,修复一个 Bug 或添加一个新功能,并提交 Pull Request。

3. 团队项目

和朋友或同事一起合作开发一个小型项目,使用 Git 管理代码,体验协作开发的工作流程。

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

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

相关文章

to_json 出现乱码的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

国产分布式数据库灾备高可用实现

最近在进行核心业务系统的切换演练测试&#xff0c;就在想一个最佳的分布式数据库高可用部署方案是如何保证数据不丢、系统可用的&#xff0c;做到故障时候可切换、可回切&#xff0c;并且业务数据的一致性。本文简要介绍了OceanBase数据库和GoldenDB数据库在灾备高可用的部署方…

kafka的架构

一、架构图 Broker&#xff1a;一台 kafka 服务器就是一个 broker。一个kakfa集群由多个 broker 组成。一个 broker 可以容纳多个 topic。 Producer&#xff1a;消息生产者&#xff0c;就是向 kafka broker 发消息的客户端 Consumer&#xff1a;消息消费者&#xff0c;向 kafk…

深海电波,智能驾驭:海上发电系统中的先进网关技术

随着技术的不断演进&#xff0c;海上风电场逐渐走向深海&#xff0c;随之而来的高速通信保障成为一大难题。同时&#xff0c;海上风电特殊的环境与部署技术&#xff0c;也给运维带来了作业难、成本高、响应慢等困难。通过在沿海岸边建立高站&#xff0c;结合超远覆盖、载波聚合…

springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver 应该如何解决

遇到的问题&#xff1a;项目中引用了外部的达梦jar包 在idea中正常使用 也能找到dm.jdbc.driver.DmDriver 驱动 但是当通过jenkins 构建部署到服务器上 总是报 ClassNotFoundException: dm.jdbc.driver.DmDriver 找不到驱动 应用到的驱动代码如下格式 排查步骤 1.首先看你的项…

ROS2仿真工具-gazebo

gazebo独立于ROS2&#xff0c;就像插件一样&#xff0c;需要安装。 1.安装 sudo apt install gazebo sudo apt install ros-humble-gazebo-* 2.运行测试demo gazebo /opt/ros/humble/share/gazebo_plugins/worlds/gazebo_ros_diff_drive_demo.world 查看所有话题 ros2 top…

使用css做一个旋转的八卦图

使用css做一个旋转的八卦图 1, html部分 <div class"tai"><div class"bai"></div><div class"hei"></div> </div>2, css部分 .tai{width: 200px;height: 200px;border: 1px solid #000;background: linea…

STM32-I2C硬件外设

本博文建议与我上一篇I2C 通信协议​​​​​​共同理解 合成一套关于I2C软硬件体系 STM32内部集成了硬件I2C收发电路&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担 特点&#xff1a; 多主机功能&#x…

Shiro框架

入门概述 1 shiro是什么? Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成&#xff1a;认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程…

计算机网络网络层复习题1

一. 单选题&#xff08;共27题&#xff09; 1. (单选题)以太网 MAC 地址、IPv4 地址、IPv6 地址的地址空间大小分别是&#xff08; &#xff09;。 A. 2^48&#xff0c;2^32&#xff0c;2^128B. 2^32&#xff0c;2^32&#xff0c;2^96C. 2^16&#xff0c;2^56&#xff0c;2^6…

浅谈k8s中cni0和docker0的关系和区别

最近在复习k8s网络方面的知识&#xff0c;查看之前学习时整理的笔记和文档还有过往自己总结的博客之后发现一个问题&#xff0c;就是在有关flannel和calico这两个k8s网络插件的文章和博客中&#xff0c;会涉及到cni0和docker0这两个网桥设备&#xff0c;但是都没有明确说明他们…

C# WPF自制批注工具(方便标记重点和演示)

在教学和演示中&#xff0c;我们通常需要对重点进行批注&#xff0c;下载安装第三方工具批注显得很麻烦。本篇使用WPF开发了一个批注工具&#xff0c;工具小巧&#xff0c;功能丰富&#xff0c;非常使用日常免费使用&#xff0c;或者进行再次开发。 自制批注工具具有以下功能特…

Flask 数据创建时出错

当我们在使用 Flask 创建数据时遇到错误&#xff0c;可能有多种原因&#xff0c;包括代码错误、数据库配置问题或依赖项错误。具体情况我会总结成一篇文章记录下&#xff0c;主要是归类总结一些常见的解决方法和调试步骤&#xff0c;帮助大家解决问题&#xff1a; 1、问题背景 …

OFDM技术概述8——FBMC

Filter bank multicarrier(FBMC&#xff0c;滤波器组多载波)&#xff0c;是一种类似于OFDM的调制方式&#xff0c;用滤波器抑制子载波的旁瓣大小&#xff0c;使用FFT/IFFT或多相滤波器实现&#xff0c;其应用于5G的主要优势&#xff1a; 子载波信号带限&#xff0c;带外泄漏小…

LiveNVR监控流媒体Onvif/RTSP用户手册-视频广场:状态记录、播放、回放入口、筛选在线离线、搜索

LiveNVR监控流媒体Onvif/RTSP用户手册-视频广场:状态记录、播放、回放入口、筛选在线离线、搜索 1、视频广场1.1、搜索筛选1.2、状态记录1.3、播放1.4、视频信息1.5、回放入口 2、RTSP/HLS/FLV/RTMP拉流Onvif流媒体服务 1、视频广场 1.1、搜索筛选 可以下拉筛选 在线、离线 &a…

C++部分复习笔记上

C语法复习 1. C入门基础 缺省参数 半缺省参数必须从右往左依次来给出&#xff0c;不能间隔着给缺省参数不能在函数声明和定义中同时出现缺省值必须是常量或者全局变量C语言不支持&#xff08;编译器不支持&#xff09; 函数重载 函数重载是函数的一种特殊情况&#xff0c;…

William Yang:从区块链先锋到艺术平台创始人

在区块链技术和加密货币市场飞速发展的今天&#xff0c;William Yang无疑是这一领域的佼佼者。他不仅在学术和媒体领域取得了显著成就&#xff0c;更在创业之路上不断探索&#xff0c;成为了业内知名的KOL&#xff08;关键意见领袖&#xff09;。今天&#xff0c;我们有幸采访到…

AI姓氏头像生成微信小程序系统源码

&#x1f525;【科技新潮流】AI姓氏头像生成系统&#xff0c;你的专属个性新名片&#xff01;&#x1f389; &#x1f31f; 开篇惊艳&#xff1a;一键解锁你的姓氏魅力 ✨ Hey小伙伴们&#xff0c;今天我要安利一个超酷炫的科技小玩意——AI姓氏头像生成系统&#xff01;是不…

爬虫笔记20——票星球抢票脚本的实现

以下内容仅供交流学习使用&#xff01;&#xff01;&#xff01; 思路分析 前面的爬虫笔记一步一步走过来我们的技术水平也有了较大的提升了&#xff0c;现在我们来进行一下票星球抢票实战项目&#xff0c;实现票星球的自动抢票。 我们打开票星球的移动端页面&#xff0c;分…

视频字幕提取在线工具有哪些?总结5个字幕提取工具

平时在沉浸式追剧的时候&#xff0c;我们常常都会被影视剧中的各种金句爆梗而逗得开怀大笑~而真正要用到时候却总是一片头脑空白。其实要记住它们最好的办法便是将其提取留档下来&#xff0c;每次有需要的时候打开就能一下子回顾到~ 今天就来带大家盘一盘视频字幕提取的软件好…