自在学

我们与你共同进步

  • 分类课程
  • 文章
  • 工作台
  • 订阅

  • 关于我们
  • 隐私政策
  • 使用条款

探索

  • 分类课程
  • 文章
  • 工作台
  • 订阅

网站信息

  • 关于我们
  • 隐私政策
  • 使用条款

加入社区

自在学学习社区微信二维码

微信扫码,交流学习

株洲市自在学教育科技有限公司© 2025 - 2026 版权所有

© 2025 - 2026 株洲市自在学教育科技有限公司 版权所有

湘公网安备43020302000292号|湘ICP备2025148919号-1
分类课程工作台文章订阅
分类课程工作台文章价格

Git

  1. 01安装 Git 与完成首次配置
  2. 02创建仓库与第一次提交
  3. 03用分支完成一项功能
  4. 04建立远程仓库与第一次推送
  5. 05双人协作与冲突解决
  6. 06撤销、暂存与恢复
  7. 07整理历史与发布 v1.0.0
  8. 08用 Git 历史定位错误
  9. 09Git 对象与 v1.1.0 交付
正在加载课程章节内容
课程编程Git创建仓库与第一次提交

创建项目并完成第一次提交

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

文件从工作区进入暂存区和仓库


初始化仓库

先创建项目目录,再让 Git 接管它:

bash
mkdir team-task-board
cd team-task-board
git init

结果示例:

text
Initialized empty Git repository in .../team-task-board/.git/

git init 创建了隐藏目录 .git。项目的对象、引用、配置和日志都存放在这里。普通文件仍在项目目录中;不要手动编辑 .git 里的内容。

确认当前分支:

bash
git branch --show-current

结果应是:

text
main

如果结果是 master,说明上一节的默认分支配置没有在初始化前生效。空仓库里可以执行 git branch -m main 统一名称。


创建项目文件

创建说明、任务清单和忽略规则:

bash
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

这些命令的目的是得到完全一致的起点。你也可以用编辑器创建文件,只要内容相同即可。

现在查看状态:

bash
git status --short

结果:

text
?? .gitignore
?? README.md
?? tasks.md

?? 表示文件尚未被 Git 跟踪。notes/debug.log 没有出现,因为 .gitignore 的第一行忽略了所有 .log 文件。

用下面的命令查清一条路径被哪条规则忽略:

bash
git check-ignore -v notes/debug.log

结果:

text
.gitignore:1:*.log    notes/debug.log

.gitignore 只影响尚未跟踪的文件。如果敏感配置已经提交过,再把它写进忽略规则并不能从历史中删除。


理解三个区域

Git 的日常操作可以看成文件在三个区域之间移动:

区域里面是什么常用查看方式
工作区你正在编辑的文件git diff
暂存区准备放进下一次提交的内容git diff --cached
仓库已经创建的提交历史git log

git add 不是“上传”,它只是把当前内容放入暂存区。git commit 读取暂存区,创建一条提交。没有进入暂存区的修改不会混进提交。

先选择本次提交要包含的文件:

bash
git add README.md tasks.md .gitignore

查看暂存区的概要:

bash
git diff --cached --stat

结果:

text
 .gitignore | 3 +++
 README.md  | 3 +++
 tasks.md   | 4 ++++
 3 files changed, 10 insertions(+)

这一步是提交前的对账。文件名和行数符合预期,再创建提交:

bash
git commit -m "chore: initialize team task board"

结果示例:

text
[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.md

root-commit 表示这是仓库的第一条提交。6457dcd 是提交 ID 的短写;你的 ID 会不同,这是正常的。


读懂状态与差异

继续修改 tasks.md:

bash
printf '\n- [ ] 邀请协作者\n' >> tasks.md
git status --short

结果会出现:

text
 M tasks.md

前两列分别代表暂存区和工作区。这里的 M 在第二列,表示工作区修改尚未暂存。

查看具体变化:

bash
git diff -- tasks.md

把它加入暂存区后再次看状态:

bash
git add tasks.md
git status --short

此时结果变成:

text
M  tasks.md

M 移到第一列,表示这份修改已进入暂存区。用 git diff --cached 可以检查即将提交的内容。

这行只是用来观察状态,不纳入项目历史。先撤出暂存区,再把工作区恢复到最近一次提交:

bash
git restore --staged tasks.md
git restore tasks.md
git status --short

最后一条命令应没有输出。第六节会专门比较各种撤销命令;这里先把两条 restore 理解成“取消本次练习修改”即可。


查看历史和单次提交

紧凑地查看历史:

bash
git log --oneline --decorate -3

输出会类似:

text
6457dcd (HEAD -> main) chore: initialize team task board

HEAD -> main 表示你当前位于 main,它指向最新提交。查看某次提交到底改了什么:

bash
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 不是失败,它表示工作区和暂存区都很干净。

1
准备提交前,哪些命令能帮助你检查将要提交的内容?
2
状态码左侧出现 M,最准确的含义是什么?
上一章安装 Git 与完成首次配置下一章用分支完成一项功能