Git从零到远程协作:手把手实战指南

Git从零到远程协作:手把手实战指南

目录

序言:认识Git

1. 启程 - 安装与初体验

   1.1 踏上Git之旅 - 下载与安装

   1.2 第一次亲密接触 - 基础配置与仓库创建

2. 核心引擎 - 提交、历史与工作流

   2.1 理解Git的“魔法” - 工作区、暂存区与仓库

   2.2 记录你的足迹 - 添加(git add)与提交(git commit)

   2.3 时光回溯 - 查看历史与差异(git diff)

3. 协作基石 - 分支与合并

   3.1 开辟平行宇宙 - 分支(Branching)

   3.2 合而为一 - 合并(Merging)

4. 连接世界 - 远程仓库与协作

   4.1 架起桥梁 - 配置远程仓库(Remote)

   4.2 推送与拉取 - 同步你的工作

5. 锦上添花与排雷

   5.1 后悔药? - 撤销与重置 (谨慎使用!)

附录:常用Git命令速查表

一、环境配置

二、本地仓库操作

三、分支与合并

四、远程仓库协作

五、撤销与修复

六、高级维护


序言:认识Git

    Git 是一个开源的分布式版本控制系统,用于高效管理文件变更(尤其是代码),记录每一次修改历史,支持多人协作开发。

    Git 优势

  • 版本追溯:定位任意版本的代码差异(如 git diff);
  • 分支协作:多人并行开发不冲突(分支创建/合并);
  • 安全备份:本地+远程仓库双重保障,数据永不丢失。

一句话总结:Git = 文件变更的时光机 + 团队协作的桥梁 + 代码安全的守护者

1. 启程 - 安装与初体验

   1.1 踏上Git之旅 - 下载与安装

  (1)官方下载: 

        下载地址Git - Downloads(以windows为例)

  (2)安装向导:

        下载完毕后双击exe文件,我这里是 Git-2.40.1-64-bit 版本,以下界面可以按自己的需求选择,也可以一路按照默认的 next 即可。

  (3) 验证安装: 

安装完毕后 ,打开 Git Bash ,  执行以下命令验证安装,显示版本号证明没有问题

$ git --version # 执行结果 git version 2.40.1.windows.1 

   1.2 第一次亲密接触 - 基础配置与仓库创建

  (1)亮明身份: 配置全局用户信息

# 配置user.name user.email 建议这里的 user.email 使用真实邮箱 $ git config --global user.name "你的用户名"​ $ git config --global user.email "你的邮箱地址" # 查看 是否生效 $ cat .gitconfig

  (2)选择你的编辑器(可选): 配置默认文本编辑器 (如 VS Code, 不配置一般为vim)

# 配置 VS Code $ git config --global core.editor "code --wait" # 查看全局配置的文本编辑器 $ git config --global core.editor # 执行结果 code --wait 

  (3)初始化!创建你的第一个Git仓库

# 仓库初始化 $ git init # 执行结果 Initialized empty Git repository in C:/Users/17461/learn/.git/ # 观察隐藏的 .git 文件夹 - Git的“大脑” $ cat .git/config # 执行结果说明 [core] repositoryformatversion = 0 # 仓库格式版本(固定为0) filemode = false # 记录文件权限变化(Linux/macOS常用,Windows通常为false) bare = false # 是否为裸仓库(false表示常规仓库,有工作区) logallrefupdates = true # 记录所有引用(分支、标签)的更新日志 ignorecase = true # 是否忽略文件名大小写(Windows/macOS常见) editor = code --wait # 当前仓库单独配置的默认文本编辑器(覆盖全局)

  (4)初窥状态: 

  • 未跟踪状态:通常位于 Untracked files: 标题下方,并使用 红色 文字显示,尚未被 Git 仓库管理
  • 已暂存状态:通常位于 Changes to be committed: 标题下方,并使用 绿色 文字显示,已经通过 git add 命令添加到了暂存区 
# 1. 新建一个测试文件 $ vi test.txt # 保存后查看状态 $ git status # 将文件添加至暂存区 $ git add test.txt

2. 核心引擎 - 提交、历史与工作流

   2.1 理解Git的“魔法” - 工作区、暂存区与仓库

  (1)工作区 (Working Directory)

  • 你的编辑沙盒:直接看到的项目文件
  • 状态
    ✅ 未跟踪文件(新文件)
    ✅ 已修改未暂存(改动的文件)
    ⚠️ 所有变动尚未被Git记录

  (2) 暂存区 (Staging Area)

  • 提交的预演台git add 后的文件存放区
  • 核心作用
    ✨ 精准筛选要提交的内容(文件/代码块)
    ✨ 构建原子化提交(避免混杂修改)
  • ⚡️ 临时存储 → 不commit则不会永久保存

  (3)版本库 (Repository)

  • 历史保险箱.git 目录下的数据库
  • 核心能力
    🔒 永久存储提交(git commit 的快照)
    🔄 记录分支/标签等完整历史
  • ⚡️ 数据不可篡改 → 只增不减的提交链

  (4)Git三大核心区域的最精简概括

   2.2 记录你的足迹 - 添加(git add)与提交(git commit)

  (1)添加(git add)

  git add 是将工作区的变更(新增、修改、删除)添加到暂存区的核心命令,是提交前的 “预备动作”,确保需要记录的变更被 Git 跟踪。

# 仅将指定文件的当前变更(修改 / 新增 / 删除)加入暂存区,其他文件不受影响。 git add <filename> # 添加当前目录(包括子目录)下的所有新增文件和已跟踪文件的修改/删除,但不包括被删除的未跟踪文件。 git add . # 添加所有变更,包括新增文件、已跟踪文件的修改 / 删除、被删除的未跟踪文件,覆盖范围比 git add . 更全面。 git add -A(或 git add --all)

  (2) 提交(git commit)

  git commit 将暂存区的变更提交到本地仓库,生成一个不可修改的历史节点,是 Git 记录项目历史的核心操作。

# 将暂存区的所有变更打包成一个 “提交记录”,存入本地仓库,同时生成唯一标识(SHA-1 哈希值)。 git commit -m "清晰、有意义的提交说明"

   (3)总结:

  git add 负责 “选中要提交的内容”,git commit 负责 “将选中内容存档为历史节点”,两者配合完成本地代码的版本记录,是 Git 工作流的基础。

   2.3 时光回溯 - 查看历史与差异(git diff)

  (1) 翻阅历史日志: git log - 查看提交记录 (常用选项:--oneline--graph--pretty)

# 简洁模式,每条提交仅显示哈希值前 7 位和提交说明,适合快速浏览历史。 git log --oneline # 以图形化方式展示分支合并历史,直观呈现分支关系(如 * 表示提交,| 表示分支线)。 git log --graph # 自定义输出格式,常用 --pretty=fuller 显示完整提交信息(包括作者、提交者、时间戳),或 --pretty=format:"%h %an %s" 按需提取信息(%h 短哈希、%an 作者名、%s 提交说明)。 git log --pretty=<格式> # 以图形化线条展示所有分支的提交历史和合并关系 git log --graph --oneline --all

  (2)火眼金睛: git diff - 比较工作区、暂存区、不同提交之间的差异

# 比较工作区与暂存区 git diff(查看未暂存的修改)。 # 比较暂存区与本地仓库 git diff --staged(查看已暂存、待提交的修改)。 # 比较两个提交 git diff <提交1> <提交2>(如 git diff a3f8d2e b7c9d01,查看两次提交的差异)。 # 比较两个分支 git diff 分支1 分支2(如 git diff main dev,查看两分支最新提交的差异)。

  (3)查看快照内容: git show - 查看特定提交的详细信息

# 查看最新提交 git show(默认显示 HEAD 指向的最新提交)。 # 查看指定提交 git show <提交哈希>(如 git show a3f8d2e,显示该提交的详细变更)。 # 查看标签对应的提交 git show <标签名>(如 git show v1.0,查看标签指向的提交详情)。

3. 协作基石 - 分支与合并

   3.1 开辟平行宇宙 - 分支(Branching)

  (1)创建分支

# 创建分支: git branch <分支名>(如 git branch feature/login) # 切换分支: git checkout <分支名>(如 git checkout dev) # 新版切换分支: git switch <分支名>(更直观,如 git switch main) # 创建并切换: git switch -c <新分支名>(一步完成创建 + 切换)

  (2)查看分支

# 显示本地所有分支,当前分支前标 * git branch # 显示本地 + 远程所有分支(远程分支以 remotes/ 开头) git branch -a

   3.2 合而为一 - 合并(Merging)

# 将指定分支的代码整合到当前分支 git merge <待合并分支>

4. 连接世界 - 远程仓库与协作

   4.1 架起桥梁 - 配置远程仓库(Remote)

  (1)什么是远程仓库?

远程仓库是托管在网络服务器上的 Git 仓库(如 GitHub、GitLab、Gitee 等平台),主要作用:

  • 作为代码共享与协作的中央枢纽,方便多人同步代码;
  • 提供代码备份,防止本地代码丢失;
  • 支持团队成员基于远程仓库进行协同开发(如提交、拉取、评审代码)。

  (2)配置远程仓库ssh公钥(无需每次输入账号密码)

# 生成密钥对 ssh-keygen -t ed25519 -C "建议与远程平台账号关联的邮箱" # 查看并复制公钥内容 cat ~/.ssh/id_ed25519.pub

  (3)关联远程仓库

# 将本地仓库与远程仓库关联 git remote add <远程名称> <仓库地址> # 建立本地仓库与远程仓库的映射,后续可通过 origin 指代该远程仓库。 git remote add origin https://gitee.com/yourname/yourrepo.git 

  (4)查看远程仓库

# 列出当前仓库关联的所有远程仓库,包括名称和对应的 fetch(拉取)、push(推送)地址。 git remote -v(-v 表示显示详细地址)

   4.2 推送与拉取 - 同步你的工作

  (1)克隆(Clone): 

# 获取完整项目 (git clone) - 初始化远程关联的快捷方式 git clone https://gitee.com/yourname/yourrepo.git

  (2) 获取他人成果: git pull = git fetch + git merge

  • 详解 git fetch (获取远程更新但不自动合并)
# 获取远程仓库origin的所有更新 git fetch origin # 仅获取远程main分支的更新 git fetch origin main 
  • 详解 git pull (获取并自动尝试合并到当前分支)
# 对比本地当前分支与远程main的差异 git diff origin/main # 手动将远程更新合并到当前分支 git merge origin/main 

  (3)上传你的杰作

# 第一次推送加 -u 建立追踪 git push -u origin  # 后续推送简化 git push # 推送到仓库的哪个分支(dev master) git push github(仓库别名) main(分支)

5. 锦上添花与排雷

   5.1 后悔药? - 撤销与重置 (谨慎使用!)

  (1)撤销工作区修改:git checkout -- <文件>

  • 作用:丢弃工作区中指定文件的未暂存修改,恢复到最近一次提交或暂存的状态。
  • 示例
# 撤销对 test.txt 的本地修改。 git checkout -- test.txt
  • 注意:此操作直接覆盖本地修改且无法恢复,使用前确保不需要保留当前修改。

   (2)撤销暂存区修改:git reset HEAD <文件> 或 git restore --staged <文件>

  • 作用:将已用 git add 暂存的文件从暂存区撤回(回到 “未暂存” 状态),不影响工作区内容。
  • 示例
# 传统: git reset HEAD test.txt # 新版: git restore --staged test.txt
  • 适用场景:误将文件加入暂存区,需重新选择暂存内容。

   (3)修改最新提交:git commit --amend

  • 作用:修改最近一次提交的注释,或补充漏掉的文件(需先 git add 未提交的文件)。
  • 操作
# 仅改注释:执行命令后编辑新注释,保存即可。补充文件: git add 漏掉的文件   git commit --amend。
  • 注意:会覆盖最新提交的哈希值,若该提交已推送到远程,需强制推送(git push -f),谨慎使用。

    (4)回退提交:git reset 与 git revert

git reset <版本>(修改历史,有风险)
  • 作用:将当前分支回退到指定版本,根据参数控制回退范围:
    • --soft:仅回退提交记录,暂存区和工作区不变(可重新提交)。
    • --mixed(默认):回退提交记录和暂存区,工作区不变(需重新 git add)。
    • --hard:彻底回退提交记录、暂存区和工作区(工作区修改全部丢失,无法恢复)。
  • 风险:修改历史记录,若回退的提交已推送到远程,需强制推送,可能影响协作。
git revert <版本>(安全回退)
  • 作用:创建一个新提交,抵消指定旧提交的修改,不改变原有历史记录。
  • 优势:安全保留完整历史,适合已推送至远程的提交回退,不影响协作。
  • 示例
# 生成新提交撤销 a1b2c3d 的修改。 git revert a1b2c3d 

附录:常用Git命令速查表

一、环境配置

命令作用示例
git --version验证安装git --version
git config --global user.name "名字"设置全局用户名git config --global user.name "John"
git config --global user.email "邮箱"设置全局邮箱git config --global user.email "[email protected]"
git config --global core.editor "编辑器"设置默认文本编辑器git config --global core.editor "code --wait"

二、本地仓库操作

命令作用示例
git init初始化新仓库git init
git status查看工作区/暂存区状态git status
git add <文件>添加文件到暂存区git add index.html
git add .添加所有修改到暂存区git add .
git commit -m "说明"提交到本地仓库git commit -m "初始化项目"
git log查看提交历史git log --oneline --graph
git diff查看工作区与暂存区差异git diff

三、分支与合并

命令作用示例
git branch查看本地分支git branch
git branch <分支名>创建新分支git branch feature-login
git checkout <分支名>切换分支git checkout main
git switch <分支名>(推荐) 切换分支git switch feature
git merge <分支名>合并分支到当前分支git merge feature
git branch -d <分支名>删除分支git branch -d fix-bug

四、远程仓库协作

命令作用示例
git remote add <别名> <URL>关联远程仓库git remote add origin https://...
git clone <URL>克隆远程仓库git clone https://github.com/xxx.git
git push -u <远程> <分支>首次推送分支git push -u origin main
git push推送更改(已关联分支)git push
git pull拉取远程更新(自动合并)git pull origin main
git fetch仅获取远程更新(不合并)git fetch

五、撤销与修复

命令作用风险等级
git restore <文件>撤销工作区修改⚠️ 覆盖本地更改
git restore --staged <文件>从暂存区撤回文件安全
git commit --amend修改最新提交(信息/内容)低风险
git reset --soft HEAD~1撤销提交但保留更改中风险
git reset --hard HEAD~1彻底丢弃最近提交⚠️️ 高危(数据丢失)
git revert <提交ID>创建新提交来撤销旧提交安全

六、高级维护

命令作用示例
git tag v1.0创建版本标签git tag v1.0
git stash临时储藏修改git stash
git stash pop恢复储藏的修改git stash pop
git rm --cached <文件>从Git移除文件(保留本地)git rm --cached .env
git reflog查看操作历史(救命命令)git reflog

Read more

图表数据提取神器:WebPlotDigitizer 快速上手全攻略

图表数据提取神器:WebPlotDigitizer 快速上手全攻略 【免费下载链接】WebPlotDigitizerComputer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/web/WebPlotDigitizer 还在为从图表图片中提取数据而烦恼吗?WebPlotDigitizer 这款计算机视觉辅助工具能够帮你快速从各种图表图像中提取精确的数值数据。无论你是科研人员需要从论文图表获取实验数据,还是工程师要从技术报告提取趋势曲线,这个工具都能在几分钟内完成数据转换。 新手必备:快速搭建你的数据提取环境 在开始使用之前,你需要确保系统环境准备就绪。首先检查 Node.js 版本,建议使用 v14 或更高版本: node -v npm -v 如果未安装,Ubuntu 用户可以通过以下命令快速安装: sudo apt update

By Ne0inhk

Qwen3.5 开源全解析:从 0.8B 到 397B,代际升级 + 全场景选型指南

摘要 2026 年除夕夜,阿里通义千问正式发布Qwen3.5 开源模型家族,从 0.8B 端侧小模型到 397B 旗舰 MoE 模型全覆盖。本文深度对比 Qwen3.5 与前代 Qwen3 的核心升级,拆解全参数版本差异、优势与落地场景,帮开发者快速选型、高效部署。 前言 大模型行业早已告别 “参数内卷”,转向效率、多模态、低成本落地。Qwen3.5 不是简单的版本迭代,而是通义千问在架构、训练、推理、生态上的代际突破,全面开源(Apache 2.0 协议),让个人开发者、中小企业都能用最低成本跑起最强性能。 一、Qwen3.5 vs Qwen3:四大核心升级

By Ne0inhk

github 类似 开源网站

除了 GitHub,国内外还有许多优秀的代码托管和开发者协作平台,各有特色。以下是分类整理: 全球知名平台 1. GitLab * 特点:最强的一体化 DevOps 平台,CI/CD 功能内建且强大,社区版免费且功能齐全。 * 网址:gitlab.com(云端版)或可自行部署。 2. Bitbucket * 特点:Atlassian 旗下,与 Jira、Trello 等项目管理工具深度集成,适合企业团队。 * 网址:bitbucket.org 3. AWS CodeCommit * 特点:亚马逊 AWS 生态内的托管 Git 仓库,与 AWS 服务无缝集成。 * 适用:深度使用 AWS 云服务的团队。

By Ne0inhk

C++上位软件利用Snap7开源库实现西门子S7-200与合信M226ES多协议数据交互实战

1. 为什么我们需要跨品牌PLC数据交互? 在工厂车间里,你可能会遇到这样的场景:一条产线上,既有服役多年的西门子S7-200 PLC在控制老旧的传送带,又有新上的合信M226ES运动控制器在驱动高精度的机械臂。它们各司其职,但产线的整体协调需要它们“对话”。比如,S7-200需要告诉M226ES:“物料已到位,可以开始抓取了”;M226ES完成动作后,也需要反馈:“任务完成,可以流转下一工位了”。 这就是异构设备协同的典型需求。过去,实现这种跨品牌通信往往需要购买昂贵的网关,或者依赖复杂的OPC服务器,不仅成本高,开发和维护也麻烦。现在,我们可以换个思路,用一台普通的工控机或服务器,运行我们自己写的C++上位软件,通过一根网线,直接同时与西门子和合信的PLC“握手”通信。这背后的核心武器,就是Snap7这个开源通信库。 我干了十多年工业自动化,发现很多工程师一听到“C++”、“开源库”就觉得头大,觉得那是软件工程师的事。其实不然,现在的工具已经足够友好,只要你理解基本的通信概念,跟着步骤一步步来,完全能自己搞定。这篇文章,我就想用最“人话”

By Ne0inhk