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)
-
访问Git托管服务的注册页面(如GitHub的注册页面)。
-
提供所需的信息,包括用户名、邮箱地址和密码。请确保使用一个有效的邮箱地址,因为你将需要通过邮箱验证你的账号。
-
完成注册过程,可能需要验证你的邮箱地址。
-
一旦注册成功,你就会拥有一个Git账号,可以在Git托管服务上创建远程仓库、协作开发项目等。
下载Git
首先,让我们从安装Git开始。Git在各种操作系统上都有版本可用。以下是在不同操作系统上安装Git的步骤:
在Windows上安装Git
-
访问Git官方网站:https://git-scm.com/download/win。
-
下载适用于Windows的Git安装程序。
-
运行安装程序并按照提示进行安装。在安装过程中,你可以选择Git的默认设置,或自定义配置。
-
安装完成后,在命令提示符或Git Bash中输入以下命令验证安装是否成功:
git --version
在macOS上安装Git
-
使用Homebrew安装Git。在终端中运行以下命令:
brew install git
-
安装完成后,验证安装是否成功:
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
这个命令做了两件事情:
- 从名为
origin
的远程仓库拉取最新的代码。 - 将远程仓库的
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
的新分支并切换到它。
查看远程分支
-
查看远程分支列表:
使用以下命令可以查看远程分支的列表:
git branch -r
这会列出所有远程分支的名称。
-
查看远程分支的详细信息:
如果您想查看远程分支的详细信息,包括最新提交的哈希值和提交消息,可以使用以下命令:
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的世界里取得成功!
相关文章:
Git从入门到起飞(详细)
Git从入门到起飞 Git从入门到起飞什么是Git?使用git前提(注册git)下载Git在Windows上安装Git在macOS上安装Git在Linux上安装Git 配置Git配置全局用户信息配置文本编辑器 创建第一个Git仓库初始化仓库拉取代码添加文件到仓库提交更改推送 Git基本操作查看提交历史比较…...
R读写parquet文件
什么是parquet文件 Apache Parquet是一个开源的,列存储的数据文件格式。 https://parquet.apache.org/ 在R里面,我们可以通过arrow包来读写它。 我们先安装一下arrow包,并加载它。 install.packages("arrow") library(arrow)读写…...
Java21 LTS版本
一、前言 除了众所周知的 JEP 之外,Java 21 还有更多内容。首先请确认 java 版本: $ java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment (build 2135-2513) OpenJDK 64-Bit Server VM (build 2135-2513, mixed mo…...
【性能优化】虚拟懒加载(下拉滚动加载长列表)element-puls+el-table
目录 前言一、卡顿的原因?二、解决1、滚动懒加载2.官方 总结 前言 提示:这里可以添加本文要记录的大概内容: 在element-plus中,如果数据超过1k,就会感觉到明显的卡顿,应该是渲染的卡顿吧。反正我在请求回…...
一对多映射处理
8.3.1 、collection /** * 根据部门id查新部门以及部门中的员工信息 * param did * return */ Dept getDeptEmpByDid(Param("did") int did);<resultMap id"deptEmpMap" type"Dept"> <id property"did" column"did&quo…...
关于IDEA没有显示日志输出?IDEA控制台没有显示Tomcat Localhost Log和Catalina Log 怎么办?
问题描述: 原因是;CATALINA_BASE里面没有相关的文件配置。而之前学习IDEA的时候,把这个文件的位置改变了。导致,最后输出IDEA的时候,不会把日志也打印出来。 检查IDEA配置; D:\work_soft\tomcat_user\Tomcat10.0\bin 在此目录下&…...
蛇形填数 rust解法
蛇形填数。 在nn方阵里填入1,2,…,nn,要求填成蛇形。例如,n=4时方阵为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 解法如下: use std::io;fn main() {let mut buf String::new();…...
一文探索SD-WAN技术进阶后与MPLS的区别
在网络通信领域,随着云计算和大数据等新兴技术的快速发展,企业对于网络的可靠性、安全性以及带宽的需求越来越高。 SD-WAN(软件定义广域网)和MPLS(多协议标签交换)是两种不同的网络连接技术,它们…...
RocketMq(四)消息分类
一、普通消息 1、同步发送消息:指的是Producer发出⼀条消息后,会在收到MQ返回的ACK之后才发下⼀条消息。该方式的消息可靠性最高,但消息发送效率低。 二、顺序消息 三、延时消息...
ip地址怎么改网速快
在当今高度依赖互联网的时代,快速稳定的网络连接对于人们的生活和工作至关重要。然而,有时我们可能会遇到网络速度缓慢的问题。虽然更改IP地址并不能直接影响网络速度,但它可以成为改善网络连接的一种策略之一。虎观代理小二二将探讨如何通过…...
植物大战僵尸各种僵尸攻略(四)
前言 此文章为“植物大战僵尸”专栏中的011刊(2023年9月第十刊),欢迎订阅。版权所有。 注意: 1.本博客适用于pvz无名版; 2.pvz指植物大战僵尸(Plants VS Zonbies); 3.本文以耗费低做标准&am…...
main函数中两个参数的作用
一般我们在使用C语言时不太用到main函数自带的参数,因此最常见的main函数就像下面这样。 int main() {...... }上面这种main函数是省略了其形参的,C语言中规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv,其中&…...
华为OD机试 - 连续字母长度 - 字符串(Java 2023 B卷 100分)
目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明4、再输入5、输出6、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(…...
想要精通算法和SQL的成长之路 - 填充书架
想要精通算法和SQL的成长之路 - 填充书架 前言一. 填充书架1.1 优化 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 填充书架 原题链接 题目中有一个值得注意的点就是: 需要按照书本顺序摆放。每一层当中,只要厚度不够了,当前层最高…...
【ROS入门】ROS的核心概念
文章结构 通信机制节点(Node)——执行单元节点管理器(ROS Master)——控制中心话题通信——异步通信机制话题(Topic)消息(Message)——话题数据 服务通信——同步通信机制服务(Service) 话题和服务的区别参数(Parameter)——全局共享字典 文件系统功能包(Package&am…...
Python爬虫从端到端抓取网页
网页抓取和 REST API 简介 网页抓取是使用计算机程序以自动方式从网站提取和解析数据的过程。这是创建用于研究和学习的数据集的有用技术。虽然网页抓取通常涉及解析和处理 HTML 文档,但某些平台还提供 REST API 来以机器可读格式(如 JSON)检…...
这10款类似Stable Diffusion的ai绘图软件,你了解多少?
Stable Diffusion这款ai软件有哪些可以替代的软件?好用的类似Stable Diffusion的ai软件推荐,那么今天就跟着赞奇云工作站小编一起来看看吧。 什么是Stable Diffusion? 称为“Stable Diffusion”的文本到图像模型可以将任何文本转换为逼真、…...
部署ik分词器
部署ik分词器 案例版本:elasticsearch-analysis-ik-8.6.2 ES默认自带的分词器对中文处理不够友好,创建倒排索引时可能达不到我们想要的结果,然而IK分词器能够很好的支持中文分词 因为是集群部署,所以每台服务器中的ES都需…...
基于STM32+华为云IOT设计的智能垃圾桶
一、项目介绍 在商业街、小吃街和景区等人流密集的场所,垃圾桶的及时清理对于提供良好的游客体验至关重要。然而,传统的垃圾桶清理方式通常是定时或定期进行,无法根据实际情况进行及时响应,导致垃圾桶溢满,影响环境卫…...
板子接线图
1.ST-LINK V2接线 2.对抗板子刷蓝牙固件 接USB转TTL,用镊子短接两个孔 2.对抗板子用串口测试蓝牙AT命令 短接白色箭头,接TX,RX,电源...
Python练习之选择与循环
目录 1、编写程序,运行后用户输入4位整数作为年份,判断其是否为闰年。提示:如果年份能被400整除,则为闰年;如果年份能被4整除但不能被100整除也为闰年。2、编写程序,用户从键盘输入小于 1000 的整数&#x…...
MySQL5.7开启通用日志功能
起因: 因项目数据库占用异常,查询数据库有哪些IP地址连接使用(Windows环境下)。 操作步骤: 1、修改MySQL服务的my.ini 文件 # 开启通用查询日志 general_log 1 log_output …...
WPF控件模板
在过去,Windows开发人员必须在方便性和灵活性之间做出选择。为得到最大的方便性,他们可以使用预先构建好的控件。这些控件可以工作的足够好,但可定制性十分有限,并且几乎总是具有固定的可视化外观。偶尔,某些控件提供了…...
vue移动端页面适配
页面的适配,就是一个页面能在PC端正常访问,同时也可以在移动端正正常访问。 现在我们可以通过弹性布局【Flexible布局】、媒体查询和响应式布局。除此之外,还可以通过rem和vw针对性地解决页面适配问题。 响应式布局 响应式布局的核心&…...
Ei Scopus 双检索 |第三届信息与通信工程国际会议国际会议(JCICE 2024)
会议简介 Brief Introduction 2024年第三届信息与通信工程国际会议国际会议(JCICE 2024) 会议时间:2024年5月10日-12日 召开地点:中国福州 大会官网:JCICE 2024-2024 International Joint Conference on Information and Communication Engin…...
ChatGPT实战-Embeddings打造定制化AI智能客服
本文介绍Embeddings的基本概念,并使用最少但完整的代码讲解Embeddings是如何使用的,帮你打造专属AI聊天机器人(智能客服),你可以拿到该代码进行修改以满足实际需求。 ChatGPT的Embeddings解决了什么问题? …...
C语言指针,深度长文全面讲解
指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。 为什么需要指针? 指针解决了一些编程中基本的问题。…...
云桌面打开部署在linux的服务特别卡 怎么解决
云桌面打开部署在 Linux 服务器上的服务卡顿可能是由多种因素引起的,包括服务器性能、网络连接、应用程序配置等。以下是一些可能的解决方法,可以帮助您缓解云桌面访问部署在 Linux 服务器上的服务时的卡顿问题: 优化服务器性能: …...
day5ARM
循环点亮三个led灯 方法1 ------------------led.h---------------- #ifndef __LED_H__ #define __LED_H__#define RCC (*(volatile unsigned int *)0x50000A28) #define GPIOE ((GPIO_t *)0x50006000) #define GPIOF ((GPIO_t *)0x50007000)//结构体封装 typedef struct {vo…...
旋转链表-双指针思想-LeetCode61
题目要求:给定链表的头结点,旋转链表,将链表每个节点向右移动K个位置。 示例: 输入:head [1,2,3,4,5], k2 输出:[4,5,1,2,3] 双指针思想: 先用双指针策略找到倒数K的位置,也就是(…...
做灯箱到哪个网站找业务/商务网站建设
在从数据库中读取数据时最好直接在select语句中加入选择条件,从而直接限制筛选出符合条件的数据,而不建议读出所有的数据然后用ABAP代码来过滤筛选。 例如,不建议使用: Select * from zflight. Check : zflight-airln ‘LF’ a…...
重庆做公司网站/有哪些网络营销公司
嗜欲深者天机浅,嗜欲浅者天机深 易经基础知识 一、易经的创作过程 三个阶段:阴阳概率的产生、八卦创立、重卦并撰成卦爻辞。(一)一阴一阳之谓道(阴阳) 太极生两仪,两仪就是阴阳。人世间的一切事…...
wordpress css导航/宁波seo推广公司排名
先来回顾下我们目前的进度: 加密算法的增删改查已经完成 后端 目前准备做一个加密功能函数,用来被各个执行类函数调用。 接收 url和body, 还有project_id 前端还要给普通接口、登录接口、小用例都加上 一个是否加密开关。 既然涉及到开关,那么其实也就是一个字段。 先…...
开州区城乡建设委员会官方网站/网络营销推广服务商
近日"超越时空的紫禁城"([url]www.beyondspaceandtime.org[/url])已正式上线运营,这是一个历经数年颇受业内人士关注的项目。能够再一次以虚拟现实的方式寻访故宫,于我个人而言,感慨颇多,顺手写下…...
为什么没有人做搜索网站了/上海百度推广客服电话多少
11.27PMP考试倒计时 34天 每日5道PMP习题助大家上岸PMP! 题目1-2: 1.作为战略计划的一部分,某公司决定实施一个新的软件平台,以便管理一个集中的文档库,一些需求很明确,但是一些需求需要更多细节。…...
网站开发人员 组织架构/百度收录关键词查询
TML 表格 表格由 <table> 标签来定义。 每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由 <td> 标签定义)。 字母 td 指表格数据(table data),即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、…...