Git学习

Git学习

一、什么是Git

Git 是一个分布式版本控制系统。能帮你"记住"文件每一次修改历史、方便你回退到任意版本、并且支持多人协作的工具。

二、核心概念

概念 说明
版本控制 记录文件随时间的变化,你可以随时回溯到某个历史版本
分布式 每个人的电脑上都有一份完整的代码历史,不依赖中央
快照 Git 每次提交不是只记录"差异",而是拍一张全部文件状态
本地优先 绝大多数操作(提交、查看历史、对比、创建分支)都在本地完成,速度快,不依赖网络
  • 保存历史:每次 git commit 就像游戏里的"存档点"
  • 查看差异:知道今天改了哪些地方,和上周相比多了哪几行
  • 回退版本:改坏了?git reset 或 git revert 一键回到过去
  • 并行开发:用分支同时开发多个功能,互不干扰,完成后合并
  • 多人协作:你的同事 push 代码,你 pull 下来,Git 自动合并(有冲突会提示你手动解决)

三、工作流程

  • 工作区:你电脑里能看到的文件夹
  • 暂存区:临时存放改动的地方(git add 后)
  • 本地仓库:正式保存版本的地方(git commit 后)
  • 远程仓库:比如 GitHub、GitLab 上的仓库

这三个区域的流转关系:工作区 → git add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库

工作区

这个是在电脑写代码的地方

暂存区

在工作区的文件进行git add . (该命令是上传所有文件)之后,文件就会到暂存区。英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

四、新建一个完整工作流

1、本地电脑创建文件夹

先在代码文件夹创建一个项目文件夹,然后打开命令

bash 复制代码
git init

初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。其实这个文件夹就变成了一个本地仓库,Git 会在里面创建隐藏的 .git 目录。这个文件夹的绝对路径就是本地仓库地址。

2、配置当前仓库信息

bash 复制代码
# 配置用户名
git config user.name "xuziyuan"

# 配置邮箱
git config user.email "xxxx@qq.com"

如果需要全局,则添加--global

bash 复制代码
# 配置用户名
git config --global user.name "xuziyuan"

# 配置邮箱
git config --global user.email "xxxx@qq.com"

3、配置远程仓库

方式一:克隆时自动配置

bash 复制代码
git clone https://github.com/用户名/仓库名.git

方式二:手动添加(本次学习)

bash 复制代码
# 添加一个远程仓库,命名为 origin,地址为 xxx
git remote add origin https://github.com/用户名/仓库名.git


# 查看当前配置的远程地址
git remote -v


# 如果已有 origin,想修改地址
# git remote set-url origin https://新地址.git

4、添加文件并提交到本地仓库

bash 复制代码
# 添加所有改动
git add .                 

# 提交到本地仓库
git commit -m "说明"      

5、推送到远程仓库

bash 复制代码
 # 查看远程仓库地址
git remote -v            

# 推送到远程 main 分支
git push origin main      

到这一步,本次提交就完成了。现在就得去远程仓库提PR了。如果被打回来修改后重复就好了

6、拉去合并后的代码

bash 复制代码
# 拉取远程 main 分支的更新
git pull origin main

# 查看本地分支     
git branch 
      
# 创建并切换到新分支         
git checkout -b new-branch 


# 合并分支到当前分支
git merge new-branch      

其他人可能也提了PR,所以下一次开发要拉新代码下来,并且要查看一下更新。

7、撤销与修改

bash 复制代码
 # 撤销工作区的修改(未 add)
git restore <文件>

 # 从暂存区撤回到工作区
git restore --staged <文件> 

# 撤销最后一次 commit,改动保留在暂存区
git reset --soft HEAD~1   

# 彻底撤销最后一次 commit(谨慎使用)
git reset --hard HEAD~1   

五、Git命令学习

六、疑惑问题

6.1、为什么不能只用本地仓库?

本地仓库非常强大------所有提交、分支、历史记录都在你自己的电脑上。但仅有本地仓库,会遇到三个致命问题:

  1. 无法与别人协作你改完代码,同事怎么拿到?把 U 盘拷给他?每人各自改完再手动合并?那简直是一场灾难。远程仓库充当公共服务器,所有人都能 push / pull,Git 自动合并和解决冲突。
  2. 没有备份,电脑坏了代码就没了:硬盘损坏、电脑丢失、勒索病毒...... 如果只有本地仓库,所有版本历史瞬间消失。远程仓库(GitHub / GitLab 等)相当于云备份,随时可以克隆回来。
  3. 多设备同步困难:你在公司电脑写了一半的功能,回家想继续写。如果没有远程仓库,就得用网盘或 U 盘拷贝,非常麻烦。
    有了远程仓库,只需 git push 然后回家 git pull,代码状态完全同步。

6.2、远程地址的两种协议有什么区别?

协议 格式示例 特点
HTTPS https://github.com/user/repo.git 每次 push 可能需要输入用户名和密码(可用凭证缓存或 token)
SSH git@github.com:user/repo.git 需要配置 SSH 公钥,免密码更安全,推荐

6.3、我本地的文件夹路径和远程地址能一样吗?

不能。一个是你电脑的路径,一个是网络地址,格式完全不同。

6.4、如果我换了电脑,怎么把代码连到同一个远程仓库?

在新电脑上 git clone <远程地址>,Git 会自动创建本地仓库并关联好远程地址。

6.5、本地仓库可以和多个远程仓库关联吗?

可以。比如同时关联 GitHub 和 Gitee:

bash 复制代码
git remote add github https://github.com/user/repo.git
git remote add gitee https://gitee.com/user/repo.git

推送时分别 git push github main 和 git push gitee main。

查看本地仓库关联了哪些远程地址

bash 复制代码
git remote -v
相关推荐
Java 码思客1 小时前
【ElasticSearch从入门到架构师】第7章-聚合查询——实现数据统计与分析
大数据·elasticsearch·jenkins
编程圈子2 小时前
电机驱动开发学习1. 直流无刷电机介绍
学习
TheRouter2 小时前
LLM 应用的Prompt 版本管理工程实践:从ad-hoc 字符串到生产级Prompt 仓库
大数据·elasticsearch·ai·prompt
YM52e2 小时前
鸿蒙PC ArkTS 死亡轮循深度解析与解决方案
学习·华为·harmonyos·鸿蒙·鸿蒙系统
kdxiaojie2 小时前
Linux 驱动研究 —— SPI (2)
linux·运维·笔记·学习
Chris _data2 小时前
# WPF 学习记录( 第二天)
学习·wpf
梦072 小时前
Trae Friends福州线下活动收获一二-vibeCoding现状
经验分享·学习
星恒随风2 小时前
C++ 模板初阶:从泛型编程、函数模板到类模板,一篇打通基础概念
开发语言·c++·笔记·学习
踏着七彩祥云的小丑2 小时前
嵌入式测试学习第35 天:蓝牙、WiFi嵌入式设备测试基础概念
单片机·嵌入式硬件·学习