第三章. Git 基础命令实战:从 git init 初始化到 git push 推送
第三章. Git 基础命令实战:从 git init 初始化到 git push 推送
Prorise第三章. Git 基础命令实战:从 git init 初始化到 git push 推送
摘要:万事俱备,只欠东风。在这一章,我们将不再纸上谈兵,而是真正动手创建一个项目。我们将从创建一个空文件夹开始,看着它变身为 Git 仓库,写下第一行代码,并亲手将它推送到 GitHub。这将是你职业生涯中无数次 git push 的起点,让我们一起来点亮你的第一个“绿色贡献格”。
本章学习路径
- 本地建仓:如何把一个普通文件夹变成“Git 仓库”。
- 提交三部曲:彻底搞懂“工作区、暂存区、版本库”的流转逻辑。
- 云端建仓:在 GitHub 网页上创建一个空仓库。
- 推送到云:将本地代码上传,完成“天地互联”。
3.1. 从零开始:初始化本地仓库
所有伟大的开源项目(Linux, Vue, React),最初都只是开发者电脑上的一个普通文件夹。
3.1.1. 创建项目文件夹
请打开你的 Windows Terminal (Git Bash)。
我们将使用命令行来创建文件夹,这是程序员的基本素养。假设我们要在 D 盘创建一个叫 my-first-project 的项目。
1 | # 1. 进入 D 盘 (注意:Git Bash 中盘符路径是 /d/ 而不是 D:) |
此时,你的终端路径应该显示为 /d/my-first-project。
3.1.2. 施展魔法:git init
现在,这只是一个普通的空文件夹。Windows 资源管理器里看它平平无奇。我们要用一条命令赋予它“时间机器”的能力。
在终端输入:
1 | git init |
终端反馈:
1 | Initialized empty Git repository in D:/my-first-project/.git/ |
(已在 D:/my-first-project/.git/ 初始化了一个空的 Git 仓库)
发生了什么?
Git 在这个文件夹里偷偷创建了一个隐藏目录叫 .git。
- 普通文件夹:删了文件就没了,无法找回。
- Git 仓库:拥有了
.git目录,以后你在这个文件夹里做的每一次修改,都会被这个目录记录下来,随时可以“时光倒流”。
注意: 千万不要手动去修改或删除 .git 文件夹里的东西,那是 Git 的“内脏”,动了它仓库就废了。
3.2. 提交三部曲:工作区 -> 暂存区 -> 版本库
这是 Git 最核心、也是新手最容易晕的概念。我们需要用一个“网购”的比喻来理解它。
- 工作区 (Working Directory):货架。你正在写代码的地方,随意修改。
- 暂存区 (Staging Area):购物车。你觉得写好了,想提交的文件,先放进购物车。
- 版本库 (Repository):收银台(生成订单)。确认购物车里的东西没问题,结账,生成一张永久的“购物小票”(Commit)。
3.2.1. 第一步:写代码(在货架上挑商品)
我们要创建一个文件。在终端输入以下命令,创建一个叫 README.md 的文件:
1 | echo "# 我的第一个项目 " > README.md |
或者你也可以直接用 VS Code 打开这个文件夹,新建一个 README.md,随便写点什么并保存。
此时,我们在 工作区 有了一个新文件。
3.2.2. 第二步:git add(放入购物车)
我们问问 Git,现在仓库是什么状态?输入:
1 | git status |
终端反馈:它会显示红色的文字 Untracked files: README.md。意思是:“老板,发现一个新文件,但它还没进购物车(暂存区),我不管它。”
现在,把它放入购物车:
1 | git add README.md |
小技巧:如果你改了 10 个文件,想全部放入购物车,可以使用
git add .(注意有个点),代表“添加当前目录下所有文件”。
再次输入 git status,你会发现文字变成了 绿色:Changes to be committed: new file: README.md
意思是:“文件已在购物车,等待结账。”
3.2.3. 第三步:git commit(结账生成小票)
现在我们要正式提交了。提交时必须附带一段“备注信息”,告诉未来的自己或队友这次改了什么。
输入:
1 | git commit -m "feat: init project with readme" |
commit:提交。-m:message(消息)的缩写。"...":双引号里写备注。切记:团队开发中严禁写 “update”、“fix” 这种无意义的废话。 我们要写清楚干了什么(比如:初始化项目并添加 readme)。
终端反馈:
[main (root-commit) 8f3a1b] feat: init project with readme1 file changed, 1 insertion(+)
恭喜!你已经生成了你的第一个“版本快照”。
3.3. 云端建仓:在 GitHub 上开辟领土
代码现在只保存在你自己的电脑(本地仓库)里。如果电脑坏了,代码就丢了。我们需要把它推送到 GitHub(远程仓库)。
3.3.1. 创建新仓库 (New Repository)
- 打开 GitHub 网页,登录。
- 在右上角点击 + 号,选择 New repository。
3.3.2. 填写仓库信息
进入创建页面后,有几个关键点要注意:
- Repository name (仓库名):填写
my-first-project(建议和本地文件夹同名,方便记忆)。 - Description (描述):选填,比如“这是我的 Git 学习练手项目”。
- Public/Private:选择 Public(公开)。
- Initialize this repository with:重点!这里全部不要勾选!
- 不要勾选 Add a README file。
- 不要勾选 .gitignore。
- 不要勾选 License。
为什么不勾选?
因为我们在本地已经创建了README.md。如果在云端也创建一个,等会儿推送时就会冲突(两边都有 README,Git 不知道听谁的)。为了省事,我们建立一个 纯空仓库。
点击底部的绿色按钮 Create repository。
3.4. 天地互联:git remote 与 git push
创建成功后,GitHub 会跳转到一个页面,贴心地告诉你“接下来该怎么做”。
注意看页面上的 “…or push an existing repository from the command line” 这一栏。我们就是要用这几行命令。
3.4.1. 关联远程仓库
回到你的 Windows Terminal。我们需要告诉本地 Git:“你的远程老家在哪里”。
复制 GitHub 页面上的第一行命令(或者手动输入,注意把 URL 换成你自己的):
1 | # 语法:git remote add <别名> <仓库地址> |
git remote add:添加远程地址。origin:这是给远程地址起的一个“昵称”。行业惯例都叫origin,当然你叫github也行,但为了专业,请叫origin。https://...:这是仓库的唯一地址。
3.4.2. 推送代码
激动人心的时刻到了。我们要把本地的 main 分支推送到远程 origin 的 main 分支。
输入:
1 | git push -u origin main |
push:推。-u:upstream(上游)的缩写。意思是“把本地的 main 和远程的 origin/main 绑定”。以后你再想推送,直接输git push就可以了,不用再罗里吧嗦写一长串。
1 | $ git push -u origin main |
如果您遇到了上述的报错无法推送,有很大概率是你在安装的时候没有将 master 分支的默认命名改为 main,你可以通过 git branch -M master + git push -u origin master 即可推送成功
终端反馈:如果你配置好了 SSH(上一章的内容),终端会显示一堆写入进度:
Enumerating objects: 3, done.Writing objects: 100% (3/3), ... done.To https://github.com/...* [new branch] main -> main
如果没有报错,说明发送成功!
3.5. 见证成果:点亮绿格子
回到浏览器,刷新 刚才那个 GitHub 仓库页面。
- 你会发现原本的引导命令不见了,取而代之的是你刚才写的
README.md文件,页面正中央显示着大大的标题 “# 我的第一个项目”。
- 你会发现原本的引导命令不见了,取而代之的是你刚才写的
点击你的头像,回到 Your profile(个人主页)。
- 看一眼底部的贡献图。是不是多了一个 绿色的小方块?
这一刻,你不再是代码的浏览者,你是代码的贡献者。
3.6. 本节小结
这一章我们完成了程序员最标准的一套“起手式”:
git init:让文件夹变成仓库。git add .:把修改放入购物车。git commit -m "...":结账生成版本。git remote add origin ...:记录远程地址。git push:上传代码。
思考检验:
- 如果我在本地又修改了 README 文件,但没有执行
git add,直接执行git commit,Git 会把修改提交上去吗?(回顾一下“购物车”的比喻)















