📘实用指南:Git 入门 + 如何将代码上传到 GitHub

发布: (2025年12月12日 GMT+8 09:18)
7 min read
原文: Dev.to

Source: Dev.to

介绍

在当前的软件开发环境中,我们使用数十种语言、框架和工具。无论技术栈如何,每位开发者都需要从早期就掌握版本控制。

两款基础工具是:

  • Git – 世界上使用最广的版本控制系统。
  • GitHub – 基于 Git 的托管与协作平台。

在展示如何将 Git 与 GitHub 集成之前,先了解这些工具为何存在以及它们内部是如何工作的至关重要。这一基础会让任何专业人士更有信心,并避免日常常见错误。

Git 是一个开源的版本控制软件,由 Linus Torvalds(Linux 的创建者)编写。最初的动机很简单:他需要一个快速、高效且可靠的系统来管理内核的版本,而当时的工具无法满足这些需求。

Git 成为全球标准的原因在于它:

  • 快速
  • 分布式(每台机器都有完整的仓库)
  • 安全(基于哈希)
  • 易于与远程服务器同步

Git 是如何工作的?

与只保存文件差异(diff)的旧系统不同,Git 对每一次提交都保存 快照(snapshot)——即文件状态的完整副本。它会“拍摄”项目的“照片”,但只重新保存发生变化的部分,这得益于哈希和去重机制。

每个快照就是一个 commit,形成一条时间线。这使得历史记录既快速又安全,且易于浏览。

Git 本质上是一个不可变对象的数据库,存放在 .git/objects/ 目录下。主要对象类型有:

  1. Blob – 文件的内容。
  2. Tree – 表示目录,指向 blobs 和其他 trees。
  3. Commit – 指向一个 tree 并指向其父 commit。
  4. Tag – 对 commit 的标记,通常用于版本。

每个对象都以其内容的哈希命名,保证:

  • 加密完整性
  • 不可变的历史
  • 损坏检测
  • 自动去重

Branch(分支) 并不是项目的副本;它只是指向某个 commit 的指针。例如:

main → 指向主线最新的 commit

创建分支会生成一个新的指针;在该分支上提交时,指针会前进。因此,创建分支成本低且被鼓励使用。

提交形成一个 有向无环图(DAG)

  • 每个 commit 指向其父 commit。
  • 合并(merge)拥有两个父节点。
  • 历史始终向前推进。

Git 还有一个中间区叫 index,我们在这里选择哪些内容进入 commit,从而实现更干净的提交、细粒度控制以及文件的部分组合。

什么是远程仓库?

GitHubGitLabBitbucket 等服务器只是额外的 Git 仓库,托管在云端。主要操作有:

  • git push → 发送本地 commit 并更新远程引用。
  • git pull → 拉取远程 commit 并更新本地分支。

Merge(合并)

  • 创建一个拥有两个父节点的 commit。
  • 保留并行历史。

Rebase(变基)

  • 重写 commit,改变其父节点。
  • 生成线性历史。
  • 产生新的哈希。

这两者都是现代开发者的常用武器。Git 永远不会修改已有的 commit——它会创建新 commit。旧的 commit 成为“孤儿”,可通过 git gc 清理。

理论小结

  • Git 是基于哈希的不可变数据库。
  • Commit 是快照。
  • Branch 是指针。
  • 历史是 DAG。
  • 远程仓库只是额外的引用。

GitHub

GitHub 是全球最大的代码托管平台,拥有数百万仓库。它归属 Microsoft,提供:

  • 仓库托管
  • issues(问题追踪)
  • Pull Request(拉取请求)
  • CI/CD 工作流(GitHub Actions)
  • 团队协作
  • 丰富的网页界面
  • 桌面端和移动端应用

简而言之:Git 在本地管理代码;GitHub 用于共享、协作和发布。

操作步骤

1. 安装 Git

git --version

如果未安装,请前往官网下载。

2. 配置用户名和邮箱

git config --global user.name "你的名字"
git config --global user.email "youremail@example.com"

3. 创建本地仓库

# 在项目目录下
git init
git add .
git commit -m "first commit"

4. 在 GitHub 上创建仓库

  1. 访问 GitHub。
  2. 点击 New repository
  3. 填写仓库名称。
  4. 不要勾选任何初始化文件(避免首次 push 冲突)。

5. 将本地仓库关联到 GitHub

git remote add origin https://github.com/usuario/repositorio.git

6. 将主分支设为 main

git branch -M main

7. 推送项目到 GitHub

git push -u origin main

完成! 🎉 你的项目已上线。

常用操作

git add .
git commit -m "message"
git pull
git push

常见问题

  1. Push 被拒绝

    git pull --rebase origin main
  2. 冲突

    • 打开冲突文件,手动解决后:

      git add .
      git commit
  3. 认证失败

    • 配置 SSH 密钥或使用 GitHub CLI 登录。

Cheatsheet(Git 常用命令)

配置

git config --global user.name
git config --global user.email

初始化

git init

状态与日志

git status
git log --oneline

暂存与提交

git add 文件
git add .
git commit -m "message"

分支

git branch
git checkout -b 新分支
git switch main

合并与变基

git merge 分支名
git rebase main

与远程同步

git remote -v
git push
git pull

克隆仓库

git clone url
Back to Blog

相关文章

阅读更多 »