📘实用指南:Git 入门 + 如何将代码上传到 GitHub
Source: Dev.to
介绍
在当前的软件开发环境中,我们使用数十种语言、框架和工具。无论技术栈如何,每位开发者都需要从早期就掌握版本控制。
两款基础工具是:
- Git – 世界上使用最广的版本控制系统。
- GitHub – 基于 Git 的托管与协作平台。
在展示如何将 Git 与 GitHub 集成之前,先了解这些工具为何存在以及它们内部是如何工作的至关重要。这一基础会让任何专业人士更有信心,并避免日常常见错误。
Git 是一个开源的版本控制软件,由 Linus Torvalds(Linux 的创建者)编写。最初的动机很简单:他需要一个快速、高效且可靠的系统来管理内核的版本,而当时的工具无法满足这些需求。
Git 成为全球标准的原因在于它:
- 快速
- 分布式(每台机器都有完整的仓库)
- 安全(基于哈希)
- 易于与远程服务器同步
Git 是如何工作的?
与只保存文件差异(diff)的旧系统不同,Git 对每一次提交都保存 快照(snapshot)——即文件状态的完整副本。它会“拍摄”项目的“照片”,但只重新保存发生变化的部分,这得益于哈希和去重机制。
每个快照就是一个 commit,形成一条时间线。这使得历史记录既快速又安全,且易于浏览。
Git 本质上是一个不可变对象的数据库,存放在 .git/objects/ 目录下。主要对象类型有:
- Blob – 文件的内容。
- Tree – 表示目录,指向 blobs 和其他 trees。
- Commit – 指向一个 tree 并指向其父 commit。
- Tag – 对 commit 的标记,通常用于版本。
每个对象都以其内容的哈希命名,保证:
- 加密完整性
- 不可变的历史
- 损坏检测
- 自动去重
Branch(分支) 并不是项目的副本;它只是指向某个 commit 的指针。例如:
main → 指向主线最新的 commit
创建分支会生成一个新的指针;在该分支上提交时,指针会前进。因此,创建分支成本低且被鼓励使用。
提交形成一个 有向无环图(DAG):
- 每个 commit 指向其父 commit。
- 合并(merge)拥有两个父节点。
- 历史始终向前推进。
Git 还有一个中间区叫 index,我们在这里选择哪些内容进入 commit,从而实现更干净的提交、细粒度控制以及文件的部分组合。
什么是远程仓库?
GitHub、GitLab、Bitbucket 等服务器只是额外的 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 上创建仓库
- 访问 GitHub。
- 点击 New repository。
- 填写仓库名称。
- 不要勾选任何初始化文件(避免首次 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
常见问题
-
Push 被拒绝
git pull --rebase origin main -
冲突
-
打开冲突文件,手动解决后:
git add . git commit
-
-
认证失败
- 配置 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