2711 字
14 分钟
Git基础使用教程
2026-05-28

前言#

上一篇文章Gitea与Git配置主要写了GiteaGit的配置,比如安装Git、配置用户名邮箱、生成SSH密钥、连接远程仓库等。

这篇文章就不继续折腾SSH了,主要讲Git最基础的一套使用流程。

很多人刚开始用Git时,基本只会三板斧:

Terminal window
git clone
git pull
git push

能用,但是一到自己改代码、提交代码、推送代码时就容易乱。比如:

  • add到底是干什么的
  • commit是不是已经上传了
  • 为什么提交前要看status
  • 为什么pull有时会冲突
  • 哪些文件不应该提交上去

所以这篇不打算把Git所有命令都讲一遍,只围绕一个最常见的问题:

我改完代码以后,怎么正确提交并推送到远程仓库?

先记住一条线#

Git日常使用可以先记住这条线:

工作区 -> git add -> 暂存区 -> git commit -> 本地仓库 -> git push -> 远程仓库

这条线看懂了,addcommitpush就没那么容易混。

工作区就是你正在编辑的项目目录。你用VS Code改了文件,这些改动一开始都在工作区里。

git add是把准备提交的内容放进暂存区。暂存区可以理解成“这次准备提交的清单”。

git commit是把暂存区里的内容保存成一次本地提交。

git push才是把本地提交上传到Gitea、GitHub这类远程仓库。

所以一定要记住:

commit = 本地存档
push = 上传远程

很多新手会以为自己commit以后别人就能看见,其实不是。只commitpush,代码还在自己电脑里。

一套最常用的日常流程#

平时改完代码后,可以按这个顺序来:

Terminal window
git status
git diff
git add .
git commit -m "提交说明"
git pull
git push

简单解释一下:

  • git status:先看当前有哪些文件改了
  • git diff:再看具体改了什么
  • git add .:把要提交的内容放进暂存区
  • git commit -m "提交说明":提交到本地仓库
  • git pull:推送前先拉一下远程最新代码
  • git push:把本地提交推送到远程仓库

后面就按这条线展开讲。

第一步:先看状态#

不知道下一步该干什么时,先敲:

Terminal window
git status

git status会告诉你几件事:

  • 当前在哪个分支
  • 哪些文件改了
  • 哪些文件已经add
  • 哪些文件还没有被Git跟踪

比如看到文件在Changes not staged for commit下面,说明这个文件改了,但还没有加入暂存区。

看到文件在Changes to be committed下面,说明这个文件已经add了,下一步可以commit

这个命令很适合用来确认现场。尤其是准备提交前,先看一眼可以避免把奇怪的文件一起提交上去。

第二步:看改了什么#

只知道“文件改了”还不够,最好再看看具体改了哪些内容。

Terminal window
git diff

git diff默认查看工作区里还没有add的改动。

如果文件已经add进暂存区了,想看这次准备提交的内容,可以用:

Terminal window
git diff --cached

只看某个文件:

Terminal window
git diff 文件名

我个人建议提交前尽量看一眼diff,尤其是写代码时临时加过console.log、测试地址、乱七八糟的注释,很容易忘记删。

第三步:选择要提交的内容#

确认改动没问题后,就可以把文件加入暂存区。

提交某一个文件:

Terminal window
git add login.js

提交当前目录下所有改动:

Terminal window
git add .

git add .很方便,但也最容易把不该提交的东西带进去。比如日志文件、临时文件、编译产物、.env配置文件。

如果你同时改了两个文件:

login.js
README.md

但这次只想提交登录相关代码,就不要直接git add .,而是:

Terminal window
git add login.js
git commit -m "修复登录失败问题"

这样README.md的改动还留在工作区,不会被这次提交带上。

第四步:提交到本地仓库#

文件加入暂存区后,就可以提交了。

Terminal window
git commit -m "添加登录页面"

commit保存的是暂存区里的内容,也就是你前面git add进去的那些改动。

一个提交最好只做一件事。比如修bug就修bug,改文档就改文档,别把“修复登录问题”和“顺手调整首页样式”混成一个提交。

提交说明也别总写:

Terminal window
git commit -m "update"

这种写法当时很爽,三天后自己看日志也不知道这个update到底更新了什么。

可以写得具体一点:

Terminal window
git commit -m "添加登录页面"
git commit -m "修复登录失败提示"
git commit -m "更新登录接口地址"

提交说明不一定要特别长,但至少要让人知道这次提交主要做了什么。

第五步:推送前先拉一下#

提交完成后,很多人会直接:

Terminal window
git push

如果只有你一个人在改这个仓库,通常没问题。

但如果远程仓库里已经有人提交了新内容,你本地还不知道,直接推送可能会被拒绝。所以比较稳妥的习惯是推送前先拉一下:

Terminal window
git pull
git push

git pull其实做了两件事:

git pull = git fetch + git merge

fetch是把远程的新提交下载下来,merge是把远程分支合并到你当前分支。

所以pull为什么会冲突?因为它本质上做了合并。

如果远程有人改了同一段代码,你本地也改了同一段,Git当然不知道该保留谁的。

第六步:推送到远程仓库#

确认本地提交没问题,也拉取过远程更新后,就可以推送:

Terminal window
git push

推送成功后,远程仓库页面上就能看到你的提交。

如果是第一次推送一个新分支,可能需要写完整一点:

Terminal window
git push -u origin 分支名

-u是设置上游分支,设置之后以后就可以直接git push

分支协作的完整流程我会放到下一篇讲,这篇先记住一件事:push才是上传远程,commit只是提交到本地。

改错了怎么撤回#

写代码时改错文件很正常,关键是先看清楚改动在哪个阶段。

如果文件还没有add,想恢复到上一次提交时的样子:

Terminal window
git restore 文件名

撤销当前目录下所有未暂存修改:

Terminal window
git restore .

这个命令会直接丢掉你的未提交修改,执行前最好先用git diff看一下。

如果文件已经git add了,但还没commit,想把它从暂存区拿出来:

Terminal window
git restore --staged 文件名

这只是取消暂存,文件内容还在。

简单记:

git restore --staged 文件名 = 从暂存区拿出来
git restore 文件名 = 丢掉工作区修改

哪些文件不要提交#

项目里总有些东西不应该交给Git管,比如依赖目录、编译产物、日志、环境变量文件。

常见的.gitignore大概长这样:

node_modules
dist
.env
*.log

.env这种文件尤其要注意,里面经常放密钥、数据库密码之类的东西,不要随便提交。

如果文件已经被提交过,再写进.gitignore是没用的,因为Git已经认识它了。要先取消跟踪:

Terminal window
git rm --cached 文件名

目录的话:

Terminal window
git rm -r --cached 目录名

然后再提交一次。

.gitignore不是删除文件,它只是告诉Git以后别继续跟踪这些文件。

简单认识一下分支#

分支听起来像是团队协作才用的东西,其实一个人写项目也很有用。

比如主分支main现在是能正常运行的版本。你突然想大改登录逻辑,如果直接在main上改,改一半发现跑不起来了,就很尴尬。

这时可以开个新分支:

Terminal window
git switch -c feature-login

查看当前有哪些分支:

Terminal window
git branch

切回主分支:

Terminal window
git switch main

分支的意义就是:

我可以在一条独立的线上折腾,折腾好了再合回主分支。

至于多人协作时怎么创建功能分支、怎么推送分支、怎么发Pull Request、怎么合并回main,下一篇《Git协作流程》会继续讲。

发生冲突怎么办#

冲突通常出现在pullmergerebase这些操作时。

冲突文件里一般会出现这种东西:

<<<<<<< HEAD
这是你本地的内容
=======
这是远程分支的内容
>>>>>>> origin/main

它的意思是:同一个位置,两边都有修改,Git不知道该选哪边。

你要做的是手动改成最终想要的内容,然后把这些冲突标记删掉。

如果是普通pullmerge产生的冲突,处理完后:

Terminal window
git add 冲突文件
git commit

如果你用的是:

Terminal window
git pull --rebase

冲突处理完后继续:

Terminal window
git add 冲突文件
git rebase --continue

不想继续这次rebase,可以取消:

Terminal window
git rebase --abort

冲突本身不可怕,它只是Git不敢替你做选择。解决完以后,最好重新跑一下项目,确认代码逻辑真的没问题。

看历史用log#

提交多了以后,可以用git log看历史:

Terminal window
git log

默认输出比较长,平时我更常用这个:

Terminal window
git log --oneline

输出大概是:

a1b2c3d 修复登录失败问题
e4f5g6h 添加用户设置页面

前面那串是提交ID,后面是提交说明。

如果想看分支关系,可以用:

Terminal window
git log --oneline --graph --all

刚开始不一定要看懂所有线条,至少能看出来提交历史是怎么往前走的。

常用命令速查#

查看当前状态:

Terminal window
git status

查看具体改动:

Terminal window
git diff

查看暂存区里的改动:

Terminal window
git diff --cached

加入暂存区:

Terminal window
git add 文件名
git add .

提交到本地仓库:

Terminal window
git commit -m "提交说明"

拉取远程更新:

Terminal window
git pull

推送到远程:

Terminal window
git push

撤销未提交修改:

Terminal window
git restore 文件名

取消暂存:

Terminal window
git restore --staged 文件名

查看历史:

Terminal window
git log --oneline

创建并切换分支:

Terminal window
git switch -c 分支名

切换分支:

Terminal window
git switch 分支名

总结#

这篇先不用死记很多高级命令,重点记住一条线:

工作区 -> git add -> 暂存区 -> git commit -> 本地仓库 -> git push -> 远程仓库

以及一套日常流程:

Terminal window
git status
git diff
git add .
git commit -m "提交说明"
git pull
git push

先用status看现场,用diff确认改动,再addcommitpullpush

把这套流程用顺以后,再去理解分支、合并、Pull Request,就不会觉得Git那么玄学了。

Git基础使用教程
https://blog.aloys233.top/posts/git基础使用教程/
作者
Aloys23
发布于
2026-05-28
许可协议
CC BY-NC-SA 4.0

评论