# Git 入门—代码仓库的使用

以前觉得 Git 就是"上传代码的工具",

后来才发现,它其实是给文件装了个"时光机"。


一、为什么需要 Git?

刚开始写代码的时候,我都是直接在一个文件夹里存项目。

今天改一点,明天改一点,过几天想找回之前的版本------翻不到了。

更别提多人协作:我把改好的文件发给同事,他再改完发回来,几次之后,谁是谁的都分不清。

后来才知道,有个东西叫 版本控制,而 Git 是其中最流行的一个。

1.1 从"单机版"到"分布式"

中央仓库 vs 本地仓库

  • 中央仓库(remote) :放在 GitHub、Gitee、GitLab 上,相当于一个"公共服务器",大家都从上面拉代码、推代码。
  • 本地仓库(local) :你电脑上的项目目录,经过 Git 初始化后,就变成了一个"带版本控制能力的本地仓库"。

Git 是 分布式 的,意思是每个人的电脑上都有一个完整的仓库副本。

不像以前那种"中央服务器挂了所有人都完蛋"的老系统,Git 即使断网也能在本地做版本管理,等有网了再同步。

另外,Git 还能帮你解决两个痛点:

  • 文件损坏或误删 :Git 会为每一次提交保存一个 快照,相当于给文件拍了张照片。随时可以回到以前的某个状态。
  • 工程化管理:多人并行开发、分支管理、合并代码......这些东西让项目变得可控。

二、初始化:git init

要把一个普通文件夹变成 Git 仓库,只需要在终端里进入这个目录,输入:

bash

csharp 复制代码
git init

执行完,当前目录下会多出一个 .git 文件夹(隐藏的)。

这个文件夹里存着所有的版本信息、配置、日志。不要乱改里面的东西,Git 自己会维护它。

一个小发现:Windows 和 Linux 的 shell 脚本不太一样,所以 Git 专门提供了一个 Git Bash------它模拟了一个最简版的 Linux 环境,让你在 Windows 上也能用同样的命令。

初始化之后,可以用 ls -all 看看有没有 .git 文件夹,有就说明成功了。


三、添加文件到仓库:git add

假设我有一个 readme.md 文件想交给 Git 管理。

第一步是:

bash

csharp 复制代码
git add readme.md

这个命令把文件放到了一个叫 暂存区(stage) 的地方。

暂存区可以理解成一个"待办区"或"购物车"------你先把要提交的东西放进去,最后统一结账(commit)。

笔记里提到一个细节:

执行 git add 后,终端会显示类似 2 insertions 的信息,表示新增了两行内容。

Git 对每一行改动都很严谨,方便你随时知道改了啥。


四、提交到仓库:git commit -m "描述"

文件放到暂存区后,还没真正入库。

需要执行:

bash

sql 复制代码
git commit -m "这里写你的说明"
  • -m 后面跟的是这次提交的 描述信息
    这个描述不能乱写,因为团队里的 leader 主要看这个来理解你改了啥。
    好的描述比如:"修复登录页面的按钮样式 bug",而不是"改了点东西"。

执行完 commit,文件才真正被存进仓库,成为一个 版本(快照)。


五、为什么要分 add 和 commit 两步?

刚接触时我很困惑:为什么不一步到位?

后来发现,分两步其实很实用。

假设你完成了一个功能,修改了三个文件:index.htmlcommon.csscommon.js

你可以:

bash

sql 复制代码
git add index.html
git add common.css
git add common.js
git commit -m "完成了首页的布局功能"

这样做的好处:

  • 灵活 :你可以分多次 add,比如先加两个文件,发现还有问题,先不改第三个。
  • 安全 :在 commit 之前,如果你反悔了,可以用 git restore --staged <文件名> 把文件从暂存区撤回来,避免提交错误的代码。
  • 原子性 :一次 commit 对应一个完整的任务(比如"完成首页功能"),而不是每个文件一个零散的版本。

所以,add 是"挑选要打包的东西",commit 是"正式封箱并写上标签"。


六、随时查看状态:git status

这是最常用的命令之一。

任何时候想确认当前仓库的状态,就输入:

bash

lua 复制代码
git status

它会告诉你:

  • 哪些文件是 untracked(未跟踪,Git 从未见过它们)
  • 哪些文件被修改了但还没 add
  • 哪些文件已经在暂存区,to be committed(待提交)

有一句很实在的话:
任何关键时刻,先 git status

比如你准备 commit 之前,看一眼有没有多加了不该加的文件;或者拉取别人代码之前,看一下自己有没有未提交的改动。

目标是 保持仓库干净------也就是没有未提交的改动,没有冲突,一切清晰。


七、文件的状态变化

我用一个简单的流程来总结文件的状态变化:

  1. 新建文件 → 状态:untracked(Git 不认识它)
  2. git add → 状态变为 staged(进了暂存区,待提交)
  3. git commit → 状态变为 committed(已存入仓库,成为历史版本)
  4. 修改已提交的文件 → 状态变为 modified(需要重新 add + commit)

你可以随时用 git status 查看当前文件处于哪个阶段。


八、把代码放到 Gitee 上:从"本地时光机"到"云端共享"

本地 Git 仓库已经很好了,能记录版本、随时回滚。

但它还是只在我自己的电脑上。如果我想:

  • 和别人一起写代码
  • 换一台电脑继续写
  • 给领导或同事看一眼进度

就需要一个 远程仓库。国内常用的有 Gitee(码云),GitHub 有时候访问不太稳。

8.1 先在 Gitee 上建一个空仓库

  1. 登录 Gitee(没有账号的话注册一个,挺快的)
  2. 点击右上角的"+" → "新建仓库"
  3. 填写仓库名称,比如 my-first-project
  4. 其他选项可以先默认:私有/公开看自己,不要勾选"使用 Readme 文件初始化" (因为我们本地已经有代码了)
  5. 点击"创建"

创建完后,Gitee 会给你一个仓库地址,长得像这样:

text

bash 复制代码
https://gitee.com/你的用户名/my-first-project.git

复制这个地址,待会儿要用。

8.2 告诉 Git 你是谁(很重要)

在第一次提交之前,Git 需要知道你的名字和邮箱。

这不是用来登录的,而是 记录每一次提交是谁做的。这样团队里其他人看到历史记录,就知道某行代码是你写的,方便沟通。

打开终端(Git Bash),输入:

arduino 复制代码
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

比如:

bash

arduino 复制代码
git config --global user.name "zhangwei"
git config --global user.email "zhangwei@example.com"

--global 表示全局生效,也就是说这台电脑上所有的 Git 仓库都会用这个用户名和邮箱。

如果你某个项目想用另一个身份(比如工作项目用公司邮箱),可以去掉 --global,在那个项目里单独配置。

小提醒:这个邮箱建议和 Gitee 账号绑定的邮箱保持一致,这样 Gitee 仓库页面上能把提交记录关联到你的头像和主页。

配置完之后可以检查一下:

bash

css 复制代码
git config --global --list

看到 user.nameuser.email 就说明好了。

8.3 把本地仓库和远程仓库连起来

回到你的项目目录(已经执行过 git init 的那个),输入:

bash

bash 复制代码
git remote add origin https://gitee.com/你的用户名/my-first-project.git

这条命令的意思是:给本地仓库添加一个远程地址,名字叫 originorigin 是 Git 默认的远程名,你也可以改成别的,但大家都用这个)。

如果不确定有没有加成功,可以看一下:

bash

复制代码
git remote -v

它会显示当前关联的远程仓库地址。

8.4 把本地代码推送到 Gitee

现在本地已经有了提交(比如你之前 commit 过),可以推上去了:

bash

perl 复制代码
git push -u origin master

或者如果你的默认分支叫 main(git branch查看,Git 新版本有时候会用 main),就改成:

bash

css 复制代码
git push -u origin main
  • -u--set-upstream 的缩写,它会记住本地分支和远程分支的对应关系。之后你再 git push 就可以直接敲,不用每次写 origin master
  • 第一次推送可能会要求你输入 Gitee 的用户名和密码(或者用 token,现在 Gitee 推荐用私人令牌)。

小插曲:我第一次推的时候,一直提示权限错误,后来发现 Gitee 从 2022 年起就不能用密码直接 push 了,要去"设置"→"私人令牌"生成一个 token,然后密码那里填 token。踩过一次坑就记住了。

推送成功后,刷新 Gitee 仓库页面,就能看到你的代码了。

8.5 之后日常怎么用?

  • 本地改了代码 → git addgit commitgit push
  • 换一台电脑想继续写 → git clone https://gitee.com/你的用户名/仓库名.git
  • 如果和别人协作,别人推送了新代码 → git pull 拉下来

这时候 Git 就从"我自己的时光机"变成了"团队共享的时光机"。

而且代码在 Gitee 的服务器上,就算我电脑坏了,也丢不了。

九、一点小感受

学 Git 之前,我觉得它就是一个"上传代码的麻烦工具"。

学了一点之后,才发现它更像是一个 时间旅行器 + 多人协作的桥梁

  • git init 给文件夹装上了"版本控制引擎"
  • git add 把选中的改动放进购物车
  • git commit 给购物车结账并贴上标签
  • git status 让我随时知道自己在哪

这些命令一旦熟悉了,反而觉得很自然。

而且它们几乎是所有 Git 工作流的基础------不管是 GitHub、GitLab 还是公司内部的 Git 服务,都离不开这一套。

如果你也是 Git 初学者,不妨试试在一个小项目里练一练:初始化、加文件、提交、改内容、再看看状态。

踩几次坑之后,很快就习惯了。

相关推荐
IceSugarJJ3 小时前
Open-AutoGLM项目学习
语言模型·微信小程序·github
一路向北he4 小时前
git仓库创建新分支,上传文件
git
阿里嘎多学长4 小时前
2026-05-22 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Dontla5 小时前
Github创建项目(创建仓库、新建项目、新建仓库)步骤
github
放下华子我只抽RuiKe55 小时前
React 从入门到生产(七):性能优化实战
前端·javascript·人工智能·react.js·性能优化·前端框架·github
晓杰'5 小时前
Balatro后端进阶(2):基于GitHub Actions的CI自动化验证实现
websocket·ci/cd·typescript·node.js·自动化·github·nestjs
析数塔6 小时前
Codegraph 实战:用知识图谱让 AI 编程效率翻倍
人工智能·github
半个落月6 小时前
从零开始理解 Git 核心操作:告别单机开发的“原始时代”
git
东风破_6 小时前
别学 Git 命令了,先搞懂这仨区域:工作区→暂存区→仓库
git