Git从入门到起飞(详细)

Git从入门到起飞

  • Git从入门到起飞
    • 什么是Git?
    • 使用git前提(注册git)
    • 下载Git
      • 在Windows上安装Git
      • 在macOS上安装Git
      • 在Linux上安装Git
    • 配置Git
      • 配置全局用户信息
      • 配置文本编辑器
    • 创建第一个Git仓库
      • 初始化仓库
      • 拉取代码
      • 添加文件到仓库
      • 提交更改
      • 推送
    • Git基本操作
      • 查看提交历史
      • 比较文件差异
      • 撤销更改
    • 分支管理
      • 创建和切换分支
      • 查看远程分支
      • 合并分支
      • 删除分支
      • 解决冲突
    • 远程仓库
      • 连接远程仓库
      • 克隆远程仓库
      • 推送和拉取更改
    • 高级Git功能
      • 标签
      • 子模块
    • Git最佳实践
      • 分支策略
      • Git工作流
    • 总结
    • 学习资源

Git从入门到起飞

Git是一个强大的版本控制系统,广泛用于跟踪和管理项目的代码变化。无论你是一名软件开发者、工程师还是项目经理,了解如何使用Git都是至关重要的技能。在本文中,我们将为您提供一个从下载到使用Git的完整指南。

什么是Git?

Git是一个分布式版本控制系统,它允许多人协作开发项目,并有效地跟踪文件的变化。无论是小型项目还是大型软件开发,Git都能提供强大的版本管理功能。

使用git前提(注册git)

  1. 访问Git托管服务的注册页面(如GitHub的注册页面)。

  2. 提供所需的信息,包括用户名、邮箱地址和密码。请确保使用一个有效的邮箱地址,因为你将需要通过邮箱验证你的账号。

  3. 完成注册过程,可能需要验证你的邮箱地址。

  4. 一旦注册成功,你就会拥有一个Git账号,可以在Git托管服务上创建远程仓库、协作开发项目等。

下载Git

首先,让我们从安装Git开始。Git在各种操作系统上都有版本可用。以下是在不同操作系统上安装Git的步骤:

在Windows上安装Git

  1. 访问Git官方网站:https://git-scm.com/download/win。

  2. 下载适用于Windows的Git安装程序。

  3. 运行安装程序并按照提示进行安装。在安装过程中,你可以选择Git的默认设置,或自定义配置。

  4. 安装完成后,在命令提示符或Git Bash中输入以下命令验证安装是否成功:

    git --version
    

在macOS上安装Git

  1. 使用Homebrew安装Git。在终端中运行以下命令:

    brew install git
    
  2. 安装完成后,验证安装是否成功:

    git --version
    

在Linux上安装Git

Git通常可以通过包管理器进行安装,具体命令可能因Linux发行版而异。以下是一些示例:

  • 在Ubuntu上安装Git:

    sudo apt-get install git
    
  • 在CentOS上安装Git:

    sudo yum install git
    
  • 在Fedora上安装Git:

    sudo dnf install git
    

安装完成后,同样可以使用以下命令验证安装是否成功:

git --version

配置Git

一旦安装了Git,你需要配置一些基本信息,以便Git知道谁在提交代码。这包括设置用户名和邮箱地址。

配置全局用户信息

使用以下命令设置全局用户名和邮箱地址:

# 下面的用户名密码是你上面注册的git用户名密码
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"

请确保将 “Your Name” 和 “youremail@example.com” 替换为你自己的姓名和邮箱地址。

配置文本编辑器

你可以选择一个喜欢的文本编辑器,Git会在需要输入文本消息时自动启动它。例如,如果你想使用VS Code作为文本编辑器,可以运行以下命令:

git config --global core.editor "code --wait"

创建第一个Git仓库

现在,让我们创建一个新的Git仓库并进行一些基本操作。

初始化仓库

首先,选择一个目录,然后在命令行中运行以下命令来初始化一个新的Git仓库:

git init

这将在选定的目录中创建一个名为.git的隐藏文件夹,用于存储Git的配置和版本历史。

拉取代码

git pull 是一个常用的Git命令,它用于从远程仓库拉取(下载)最新的代码或提交到你的本地仓库。这可以确保你的本地代码与远程仓库保持同步。

基本的 git pull 命令的用法如下:

git pull origin main

这个命令做了两件事情:

  1. 从名为 origin 的远程仓库拉取最新的代码。
  2. 将远程仓库的 main 分支(或你指定的其他分支)合并到你的当前本地分支中。
    如果你使用的是其他分支名称,可以将 main 替换为你要拉取的分支的名称。

添加文件到仓库

将你的项目文件添加到Git仓库的暂存区,以便开始跟踪它们的更改。假设你有一个名为my_project.py的文件,可以使用以下命令将其添加到暂存区:

git add my_project.py

你也可以使用git add .命令将所有更改的文件添加到暂存区。

提交更改

一旦你将文件添加到暂存区,就可以使用以下命令将它们提交到仓库:

git commit -m "Initial commit"

在引号中的消息是本次提交的描述。请确保描述清晰明了,以便日后回顾历史记录时能理解这次更改的目的。

推送

如果您希望将提交的更改推送到远程仓库,使用以下命令:

# 当然这里的main是你分支的名称 
git push origin main

这将更新远程main分支。

至此,你已经完成了Git的基本设置和第一个提交。这只是Git的冰山一角。接下来,让我们探讨更多Git的基本操作和高级功能。

Git基本操作

查看提交历史

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

git log

这将显示每个提交的详细信息,包括提交哈希、作者、日期和提交消息。

比较文件差异

如果想查看文件的具体变化,可以使用以下命令:

git diff

这将显示当前工作目录和最新提交之间的差异。

撤销更改

如果需要撤销对文件的更改,可以使用以下命令:

  • 使用git checkout命令撤销单个文件的更改:

    git checkout my_project.py
    
  • 使用git reset命令撤销已提交的更改:

    git reset HEAD~1
    

这只是Git的一些基本操作。接下来,我们将探讨分支管理、远程仓库和更高级的Git功能。

分支管理

Git的分支功能允许你在不影响主要项目的情况下进行实验性开发或修复错误。以下是分支管理的基本步骤:

创建和切换分支

要创建一个新分支并切换到它,可以运行以下命令:

git checkout -b feature-branch

这将创建一个名为feature-branch的新分支并切换到它。

查看远程分支

  1. 查看远程分支列表:

    使用以下命令可以查看远程分支的列表:

    git branch -r
    

    这会列出所有远程分支的名称。

  2. 查看远程分支的详细信息:

    如果您想查看远程分支的详细信息,包括最新提交的哈希值和提交消息,可以使用以下命令:

    git show remote/branch
    

    请将 remote 替换为远程仓库的名称, branch 替换为远程分支的名称。

合并分支

一旦完成分支上的工作,你可以将其合并回主分支。使用以下命令:

# 这是切换分支到main
git checkout main
# 这是将feature-branch内容合并到main
git merge feature-branch

这将把feature-branch的更改合并到main分支中。

删除分支

删除本地分支:

使用 git branch -d 命令来删除本地分支。如果分支没有合并到当前分支,将会出现警告,此时可以使用 -D 选项来强制删除。

# 删除已合并的本地分支
git branch -d <branch-name># 强制删除未合并的本地分支
git branch -D <branch-name>

请将 <branch-name> 替换为您要删除的分支的名称。

删除远程分支:

使用 git push 命令来删除远程分支。您需要使用 --delete 选项来告诉 Git 您要删除分支。

# 删除远程分支
git push origin --delete <branch-name>

同样,请将 <branch-name> 替换为您要删除的远程分支的名称。这个命令会将删除操作推送到远程仓库,从而删除远程分支。

请小心使用删除分支的命令,因为删除后,分支上的提交将无法恢复。确保您已经备份了重要的分支或提交。

解决冲突

在合并分支时,可能会出现冲突。Git会提示你解决这些冲突,然后再次尝试合并。

远程仓库

Git还支持与远程仓库进行交互,这对团队协作和备份代码非常重要。

连接远程仓库

使用以下命令将本地仓库与远程仓库关联:

git remote add origin <remote-repo-url>

<remote-repo-url>是远程仓库的URL。

克隆远程仓库

如果要获取现有的远程仓库的副本,可以使用以下命令进行克隆:

git clone <remote-repo-url>

这将克隆远程仓库到本地,并在本地创建一个与之相对应的目录。

推送和拉取更改

  • 使用git push命令将本地更改推送到远程仓库:

    git push origin main
    
  • 使用git pull命令从远程仓库拉取更改:

    git pull origin main
    

高级Git功能

标签

你可以使用标签来标记重要的提交。创建标签的命令如下:

git tag -a v1.0 -m "Version 1.0"

子模块

Git支持子模块,允许你将其他Git仓库嵌套到主仓库中。这在管理复杂项目时非常有用。

Git最佳实践

分支策略

常见的分支策略包括主分支、开发分支和特性分支。这些策略可以根据项目的需要进行调整。

Git工作流

有不同的Git工作流程,如Git Flow和GitHub Flow,它们提供了一套团队协作的最佳实践。

总结

Git是一个强大的版本控制系统,它可以在软件开发和项目管理中发挥关键作用。通过本文,你已经了解了Git的基本概念、安装和基本操作,以及一些高级功能和最佳实践。继续学习和实践Git,它将成为你项目管理工具箱中的重要工具。

学习资源

  • Git官方文档
  • GitHub Learning Lab
  • Git教程 - 廖雪峰的官方网站
  • Pro Git书籍

希望这篇博客对你有所帮助,让你更好地理解和使用Git。如果你有任何问题或需要进一步的帮助,请随时提问。愿你在Git的世界里取得成功!

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

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

相关文章

【Java 基础篇】Java字符打印流详解:文本数据的输出利器

在Java编程中&#xff0c;我们经常需要将数据输出到文件或其他输出源中。Java提供了多种输出流来帮助我们完成这项任务&#xff0c;其中字符打印流是一个非常有用的工具。本文将详细介绍Java字符打印流的用法&#xff0c;以及如何在实际编程中充分利用它。 什么是字符打印流&a…

矩阵 m * M = c

文章目录 题1题2 题1 (2023江苏领航杯-prng) 题目来源&#xff1a;https://dexterjie.github.io/2023/09/12/%E8%B5%9B%E9%A2%98%E5%A4%8D%E7%8E%B0/2023%E9%A2%86%E8%88%AA%E6%9D%AF/ 题目描述&#xff1a; (没有原数据&#xff0c;自己生成的数据) from Crypto.Util.number…

DNG格式详解,DNG是什么?为何DNG可以取代RAW统一单反相机、苹果安卓移动端相机拍摄输出原始图像数据标准

返回图像处理总目录&#xff1a;《JavaCV图像处理合集总目录》 前言 在DNG格式发布之前&#xff0c;我们先了解一下之前单反相机、苹果和安卓移动端相机拍照输出未经处理的原始图像格式是什么&#xff1f; RAW 什么是RAW&#xff1f; RAW是未经处理、也未经压缩的格式。可以…

Rust通用编程概念(3)

Rust通用编程概念 1.变量和可变性1.执行cargo run2.变量3.变量的可变性4.常量5.遮蔽5.1遮蔽与mut区别1.遮蔽2.mut 2.数据类型1.标量类型1.1整数类型1.2浮点数类型1.3数字运算1.4布尔类型1.5字符类型 2.复合类型2.1元组类型2.2数组类型1.访问数组2.无效的数组元素访问 3.函数3.1…

js实现贪吃蛇游戏

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>贪吃蛇游戏</title><style>.game-contai…

如何解决 503 Service Temporarily Unavailable?

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

想要精通算法和SQL的成长之路 - 填充书架

想要精通算法和SQL的成长之路 - 填充书架 前言一. 填充书架1.1 优化 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 填充书架 原题链接 题目中有一个值得注意的点就是&#xff1a; 需要按照书本顺序摆放。每一层当中&#xff0c;只要厚度不够了&#xff0c;当前层最高…

vue3写垂直轮播效果(translateY)

实现思路&#xff1a;卡片移动使用css的translateY属性实现&#xff0c;每个卡片从最下面移动到最上面&#xff0c;然后直接移动到最下面&#xff0c;每次改变的位移是固定的&#xff0c;假设每次移动50px&#xff0c;当移动到最小时&#xff0c;就让translataY为0&#xff0c;…

Python150题day06

1.4字典练习题 ①字典基本操作 dic { python: 95, java: 99, c: 100 } 用程序解答以下题目 1.字典的长度是多少 2.请修改java这个key对应的value值为98 3.删除 c 这个key 4.增加一个key-value对&#xff0c;key值为 php,value是90 5.获取所有的key值&#xff0c;存储在列表里…

【考研数学】高等数学第六模块 —— 空间解析几何(1,向量基本概念与运算)

文章目录 引言一、空间解析几何的理论1.1 基本概念1.2 向量的运算 写在最后 引言 我自认空间想象能力较差&#xff0c;所以当初学这个很吃力。希望现在再接触&#xff0c;能好点。 一、空间解析几何的理论 1.1 基本概念 1.向量 —— 既有大小&#xff0c;又有方向的量称为向…

C语言指针,深度长文全面讲解

指针对于C来说太重要。然而&#xff0c;想要全面理解指针&#xff0c;除了要对C语言有熟练的掌握外&#xff0c;还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。 为什么需要指针&#xff1f; 指针解决了一些编程中基本的问题。…

spring aop源码解析

spring知识回顾 spring的两个重要功能&#xff1a;IOC、AOP&#xff0c;在ioc容器的初始化过程中&#xff0c;会触发2种处理器的调用&#xff0c; 前置处理器(BeanFactoryPostProcessor)后置处理器(BeanPostProcessor)。 前置处理器的调用时机是在容器基本创建完成时&#xff…

Axure原型设计累加器计时器设计效果(职业院校技能大赛物联网技术应用项目原型设计题目)

目录 前言 一、本题实现效果 二、操作步骤 1.新建文件 2.界面设计 2.1文本框 2.2 按钮 2.3设计界面完成 3.交互 3.1启动交互设置 3.2 分别设置三个属性 3.2.1 设置值为“0” 3.2.2 文字于文本框 3.2.3 获取焦点时 3.3 停止按钮的交互动作 3.3.1 设置变量值 3.4 重…

C# 静态类和sealed类(密封类)的区别

网上看到很多文章写静态类&#xff0c;和密封类&#xff0c;但是鲜有它们的对比总结&#xff0c;在此简单总结一下&#xff1a; 静态类&#xff08;Static Class&#xff09;&#xff1a; 静态类不能被实例化&#xff0c;其成员都是静态的&#xff0c;可以通过类名直接访问。静…

uniapp-一些实用的api接口

唤起导航 调用后可以跳转到地图页 uni.openLocation({latitude: res.data.data.latitude, //到达的纬度longitude: res.data.data.longitude, //到达的经度name: res.data.data.address, // 到达的名字scale: 12, // 缩放倍数success() { // 成功回调console.log(success) }…

私有化部署企业即时通讯(企业im)除了钉钉还有这些

在现代企业中&#xff0c;私有化部署企业即时通讯平台已经成为确保数据安全和实现高效通信的重要手段。除了众所周知的钉钉&#xff0c;WorkPlus作为领先品牌&#xff0c;提供私有化部署企业即时通讯的领先选择。本文将介绍WorkPlus为企业提供的广阔领域和精彩特点&#xff0c;…

Oracle统计信息手动收集与修改

Oracle统计信息手动收集与修改 检查统计信息收集统计信息Schema统计信息收集表统计信息收集 修改统计信息锁定统计信息 检查统计信息 查看表统计信息是否过期&#xff1a; select owner,table_name,partition_name from dba_tab_statistics where STATTYPE_LOCKED is null a…

详解FreeRTOS:FreeRTOS任务删除过程源码分析(进阶篇—2)

本篇博文讲解FreeRTOS中任务删除过程的源代码,帮助各位更好理解删除任务的原理和流程。 在详解FreeRTOS:FreeRTOS任务管理函数(基础篇—11)中,讲述了可以使用vTaskDelete()函数实现删除任务。 函数源码如下: 程序说明如下: (1)、调用函数 prvGetTCBFromHandle()获取要删…

MQTT Paho Android 支持SSL/TLS(亲测有效)

MQTT Paho Android 支持SSL/TLS(亲测有效) 登录时支持ssl的交互 这是调测登录界面设计 代码中对ssl/tls的支持 使用MqttAndroidClient配置mqtt客户端请求时&#xff0c;不加密及加密方式连接存在以下几点差异&#xff1a; url及端口差异 val uri: String if (tlsConnect…

链表oj题1(Leetcode)——移除链表元素,反转链表,链表的中间节点,

链表OJ 一&#xff0c;移除链表元素1.1分析1.2代码 二&#xff0c;找到链表的中间节点2.1分析2.2代码 三&#xff0c;反转链表3.1分析3.2代码 四&#xff0c;找到链表中倒数第k个节点4.1分析4.2代码 一&#xff0c;移除链表元素 移除链表元素 1.1分析 这里的删除要分成两种…