这一节会把空目录变成真正的 Git 仓库。我们会创建“团队任务板”的第一批文件,观察工作区、暂存区和仓库之间的移动,再提交一个可回到的起点。

先创建项目目录,再让 Git 接管它:
mkdir team-task-board
cd team-task-board
git init结果示例:
Initialized empty Git repository in .../team-task-board/.git/git init 创建了隐藏目录 .git。项目的对象、引用、配置和日志都存放在这里。普通文件仍在项目目录中;不要手动编辑 .git 里的内容。
确认当前分支:
git branch --show-current结果应是:
main如果结果是 master,说明上一节的默认分支配置没有在初始化前生效。空仓库里可以执行 git branch -m main 统一名称。
创建说明、任务清单和忽略规则:
mkdir -p notes
printf '# 团队任务板\n\n用 Git 管理团队任务。\n' > README.md
printf '负责人:待分配\n\n- [ ] 创建任务列表\n- [ ] 设置优先级\n' > tasks.md
printf '*.log\n.env\nnotes/private/\n' > .gitignore
printf '临时调试信息\n' > notes/debug.log这些命令的目的是得到完全一致的起点。你也可以用编辑器创建文件,只要内容相同即可。
现在查看状态:
git status --short结果:
?? .gitignore
?? README.md
?? tasks.md?? 表示文件尚未被 Git 跟踪。notes/debug.log 没有出现,因为 .gitignore 的第一行忽略了所有 .log 文件。
用下面的命令查清一条路径被哪条规则忽略:
git check-ignore -v notes/debug.log结果:
.gitignore:1:*.log notes/debug.log.gitignore 只影响尚未跟踪的文件。如果敏感配置已经提交过,再把它写进忽略规则并不能从历史中删除。
Git 的日常操作可以看成文件在三个区域之间移动:
git add 不是“上传”,它只是把当前内容放入暂存区。git commit 读取暂存区,创建一条提交。没有进入暂存区的修改不会混进提交。
先选择本次提交要包含的文件:
git add README.md tasks.md .gitignore查看暂存区的概要:
git diff --cached --stat结果:
.gitignore | 3 +++
README.md | 3 +++
tasks.md | 4 ++++
3 files changed, 10 insertions(+)这一步是提交前的对账。文件名和行数符合预期,再创建提交:
git commit -m "chore: initialize team task board"结果示例:
[main (root-commit) 6457dcd] chore: initialize team task board
3 files changed, 10 insertions(+)
create mode 100644 .gitignore
create mode 100644 README.md
create mode 100644 tasks.mdroot-commit 表示这是仓库的第一条提交。6457dcd 是提交 ID 的短写;你的 ID 会不同,这是正常的。
继续修改 tasks.md:
printf '\n- [ ] 邀请协作者\n' >> tasks.md
git status --short结果会出现:
M tasks.md前两列分别代表暂存区和工作区。这里的 M 在第二列,表示工作区修改尚未暂存。
查看具体变化:
git diff -- tasks.md把它加入暂存区后再次看状态:
git add tasks.md
git status --short此时结果变成:
M tasks.mdM 移到第一列,表示这份修改已进入暂存区。用 git diff --cached 可以检查即将提交的内容。
这行只是用来观察状态,不纳入项目历史。先撤出暂存区,再把工作区恢复到最近一次提交:
git restore --staged tasks.md
git restore tasks.md
git status --short最后一条命令应没有输出。第六节会专门比较各种撤销命令;这里先把两条 restore 理解成“取消本次练习修改”即可。
紧凑地查看历史:
git log --oneline --decorate -3输出会类似:
6457dcd (HEAD -> main) chore: initialize team task boardHEAD -> main 表示你当前位于 main,它指向最新提交。查看某次提交到底改了什么:
git show --stat HEAD
git show HEAD -- tasks.md提交说明应描述“为什么做这次修改”。update、改一下 这类信息很难帮助未来的读者;docs: add collaboration task 能直接说明动作和对象。
用 git status --short 了解当前有哪些未跟踪、已修改或已暂存的文件。
用 git diff 检查工作区变化,再用 git add 路径 选择下一次提交的内容。
用 git diff --cached 复核暂存区。确认一次提交只完成一件事,再执行 git commit。
用 git log --oneline 确认提交已经进入历史,最后检查 是否没有输出。
没有输出的 git status --short 不是失败,它表示工作区和暂存区都很干净。
git status --short