连接 GitHub Repository 之后,最常用的两个远程操作就是:
git push
git pull可以简单理解为:
push → 把本地代码送到 GitHub
pull → 把 GitHub 的最新代码拿到本地
这两个命令是日常开发中使用频率非常高的操作。
第一次 Push
假设你已经在本地创建了 Commit:
git add .
git commit -m "Initial commit"现在希望把 main 上传到 GitHub,可以执行:
git push -u origin main这条命令看起来比较长,可以拆开理解。
origin 表示远程仓库:
originmain 表示当前希望上传的 Branch:
main而:
-u会让本地的 main 和远程的 main 建立一个默认的跟踪关系。
因此:
git push -u origin main大致可以理解为:
把本地
mainPush 到origin,并记住以后这个 Branch 默认对应远程的main。
完成第一次 Push 以后,之后通常只需要:
git pushGit 就知道应该 Push 到哪里。
Push 一个新的 Branch
假设你新建了:
feature/login并完成了一些 Commit:
git switch -c feature/login修改并提交:
git add .
git commit -m "Add login page"第一次把这个新 Branch Push 到 GitHub 时,可以使用:
git push -u origin feature/login之后继续在这个 Branch 上开发,只需要:
git push即可。
Push 完成后,你通常就可以在 GitHub 上看到这个 Branch。
什么是远程 Branch?
本地 Branch 和 GitHub 上的 Branch 可以看成对应关系。
例如:
本地修改并不会自动出现在 GitHub,必须 Push。
同样,其他人在 GitHub 上产生的新修改,也不会自动出现在你的电脑里,需要通过 Pull 等操作获取。
使用 git pull
如果远程 Repository 中已经有别人提交的新代码,可以运行:
git pullGit 会从远程获取最新内容,并尝试合并到当前 Branch。
例如你当前在:
main运行:
git pullGit 通常会获取远程 main 的最新 Commit,然后更新本地 main。
可以简单理解为:
GitHub main → git pull → 本地 main
为什么 Push 前经常要先 Pull?
假设你和另一个开发者都在修改同一个项目。
早上 GitHub 上最新 Commit 是:
A你 Clone 下来以后开始开发。
与此同时,另一个开发者先 Push 了:
A → B
而你的本地仍然是:
A → C
这时如果你直接 Push,Git 可能会拒绝,因为 GitHub 上已经有你本地没有的新 Commit B。
你需要先:
git pull让本地获得远程修改,然后再处理可能的 Merge,最后:
git push因此团队开发中常见的顺序是:
先获取远程最新代码 → git pull → 继续开发 / 解决冲突 → git push
远程同步指挥台
pull 也可能产生 Conflict
git pull 并不代表一定会顺利完成。
因为 Pull 获取远程代码后,还需要把远程修改和本地修改结合起来。如果双方修改了同一部分代码,就可能出现 Merge Conflict。
处理方式和前面介绍过的 Conflict 基本一样:
git pull → 出现 Conflict → VS Code 查看冲突 → 决定最终代码 → git add → git commit
所以理解 Branch 和 Merge,会让 git pull 更容易理解。
Push 并不是保存代码
一个常见误区是把 Push 当成“保存代码”。
实际上,真正创建 Git 历史记录的是:
git commit而:
git push只是把已经存在的 Commit 上传到 GitHub。
因此:
git commit → 创建 Commit → git push → 上传 Commit
如果你修改了文件,但没有 Commit,直接执行:
git push这些修改不会被上传,因为它们还不是 Commit。
知识测验
一个简单的 Push 流程
日常开发中可以这样操作:
git status确认修改,然后:
git add .创建 Commit:
git commit -m "Fix login error"获取远程最新修改:
git pull如果没有问题,Push:
git push整个流程可以写成:
修改代码 → git add → git commit → git pull → git push
这个流程不是所有情况下都必须严格如此,但对于刚开始学习的人来说,是一个比较安全且容易理解的工作习惯。
练习
你在 feature/search 上已有本地 Commit,远程同一 Branch 也出现了队友的新 Commit。写出检查状态、获取远程更新、合并、再次检查并 Push 的命令顺序。