PC TOOLS

EP03. “建立仓库与基本存档流程(init、clone、add、commit、status、log、.gitignore)”

首页 › PC 工具 › Developer Tools · Git & GitHub · EP03
约 10 分钟· #EP03#Git & GitHub
🔒 登录后可标记已读
  • 日常用 Git,八成时间都只在重复同一个循环:改文件 → git status → git add → git commit
  • 仓库有两种来源:自己 git init 新建,或 git clone 复制一份现成的
  • .gitignore 决定哪些文件永远不要进 Git,例如 wp-config.php 里的数据库密码、node_modules 这种几百 MB 的依赖文件夹
  • commit 说明写得好,半年后回来看历史才看得懂当初改了什么

重点内容


建立仓库:init 或 clone

情况指令结果
已经有一个项目文件夹,想开始用 Git 管git init在当前文件夹生成隐藏的 .git,变成空仓库
GitHub 上已经有仓库,想下载到电脑git clone 网址新建同名文件夹,里面有全部文件和完整历史,远端已自动设为 origin
# 在现有项目文件夹里开始用 Git
cd my-website
git init

# 把 GitHub 上的仓库整份下载下来
git clone https://github.com/aidentan/my-website.git

💡 Windows 上可以在项目文件夹里按右键 → Open Git Bash here,就不用 cd 一路切过去。


文件的四种状态

flowchart LR
    subgraph U["Untracked 未追踪"]
        U1["新文件,Git 还没管它"]
    end
    subgraph M["Modified 已修改"]
        M1["改了但还没 add"]
    end
    subgraph S["Staged 已暂存"]
        S1["add 了,等 commit"]
    end
    subgraph C["Committed 已存档"]
        C1["已进历史,没有新改动"]
    end
    U -->|git add| S
    M -->|git add| S
    S -->|git commit| C
    C -->|编辑文件| M

日常循环:status → add → commit

git status                 # 看现在哪些文件改了、哪些已暂存
git add index.html         # 把单个文件放进暂存区
git add css/               # 把整个文件夹的改动放进暂存区
git add .                  # 把当前文件夹里所有改动都放进暂存区
git commit -m "修正首页页脚的联络电话"
指令用途
git status最常用,不确定现在是什么状态就打它
git add 文件把改动放进暂存区
git add .所有改动一次放进去(先 git status 确认没有不该加的文件)
git commit -m "说明"存档,-m 后面是这次的说明
git commit不加 -m 会打开编辑器让你写较长的说明
git diff看还没 add 的改动逐行差异
git diff --staged看已经 add、准备 commit 的差异

查看历史:git log

git log                    # 完整历史(按 q 离开)
git log --oneline          # 一个 commit 一行,最常用
git log --oneline --graph --all   # 连分支关系一起画出来
git show a1b2c3d           # 看某一个 commit 改了什么

git log --oneline 的输出长这样:

a1b2c3d 修正首页页脚的联络电话
9f8e7d6 新增关于我们页面
4c5b6a7 初始版本

前面那串就是 commit hash(缩短版),之后回滚、比较都靠它指定是哪一个 commit。

📌 在 git log 画面里按 q 才能离开,很多新手卡在这里以为电脑当机。


commit 说明怎么写

❌ 不好的写法✅ 好的写法
update修正手机版菜单按钮点不开
fix结账页运费改成 RM8(东马 RM15)
改了很多东西拆成几个 commit,一个 commit 只做一件事
  • 第一行简短说「这次做了什么」(约 50 个字母内),需要的话空一行再写详细原因
  • 一个 commit 只做一件相关的事,将来要撤销也只会撤掉那一件

.gitignore:告诉 Git 哪些文件不要管

在仓库根目录建一个名叫 .gitignore 的文件,一行一个规则:

# 敏感资料
.env
wp-config.php

# 依赖和自动生成的文件
node_modules/
vendor/
dist/

# 系统垃圾文件
.DS_Store
Thumbs.db

# 所有 log 文件
*.log
写法意思
.env忽略任何位置名叫 .env 的文件
node_modules/忽略整个文件夹
*.log忽略所有 .log 结尾的文件
/todo.txt只忽略根目录的 todo.txt
!keep.log例外:前面忽略了 *.log,但这个要保留

💡 GitHub 新建仓库时可以直接选 Add .gitignore 模板(例如 Node、WordPress),不用从零写;更多模板见 github.com/github/gitignore。

⚠️ .gitignore 只对还没被追踪的文件有效。文件已经 commit 过,再加进 .gitignore 也不会自动停止追踪,要先执行 git rm --cached 文件名 把它移出追踪(文件本身会留在电脑里)。


学完你会

  • ✅ 用 git init 或 git clone 建立仓库
  • ✅ 熟练 status → add → commit 日常循环
  • ✅ 用 git log --oneline 查看历史
  • ✅ 写 .gitignore 排除敏感和不必要的文件

常见错误

  • ❌ 在整个 C:\Users\你的名字 或桌面执行 git init:整个用户目录都被 Git 管,git status 列出几千个文件。要进入项目文件夹再 init。
  • ❌ 习惯性 git add . 不先看 status:把 .env、大型影片档一起加进去。
  • ❌ 一天只 commit 一次,说明写 update:出问题时找不到是哪一个改动造成的。
  • ❌ 以为加进 .gitignore 就会从仓库消失:已追踪的文件要 git rm --cached。
  • ❌ 在 git log 画面不知道怎么出来:按 q。

Sources

官方文档:

  1. Pro Git 2.1 Getting a Git Repository - git-scm.com
  2. Pro Git 2.2 Recording Changes to the Repository - git-scm.com
  3. Pro Git 2.3 Viewing the Commit History - git-scm.com
  4. Ignoring files - GitHub Docs
📝 测验一下共 7 题