Git Pull
最后更新
git pull 用远程仓库的最新提交更新你的当前分支。它在底层先运行 git fetch 下载改动,再用 git merge 把改动整合进来,所以 git pull = git fetch + git merge。加上 --rebase 会把你的本地提交重新应用到最新提交之上,而不是创建合并提交。
在终端在线编辑器中试试这些命令:浏览器里就是真正的 shell,无需安装。
语法
| 命令 | 作用 |
|---|---|
git pull | 获取并合并当前分支对应的远程分支 |
git pull origin main | 从远程仓库拉取指定分支 |
git pull --rebase | 先获取,再把你的提交变基到最新提交之上 |
git pull --ff-only | 只有能快进时才拉取(不合并) |
git pull --no-rebase | 即使默认是变基,也强制使用合并 |
常见用法
| 目标 | 命令 |
|---|---|
| 让当前分支获取最新改动 | git pull |
| 保持历史线性 | git pull --rebase |
| 中止出现冲突的 pull | git merge --abort |
| 丢弃本地提交,与远程保持一致 | git fetch 后运行 git reset --hard origin/main |
git pull 常见问题
git pull 到底做了什么?
它从远程仓库下载当前分支的最新提交,并整合到你的本地分支。它相当于两条命令的简写:先
git fetch(下载),再 git merge(整合)。如果做了相应配置,合并这一步会改为变基。git pull 和 git fetch 有什么区别?
git fetch 只下载远程改动并更新远程跟踪分支,不会动你正在工作的分支。git pull 在 fetch 之后还会把改动合并到当前分支。想先检查别人推送了什么就用 fetch,想一步拉取并整合就用 pull。什么时候该用哪个,请看完整的 git fetch 与 pull 对比。git pull --rebase 是什么,什么时候用?
git pull --rebase 获取远程提交后,把你的本地提交重新应用到它们之上,而不是创建合并提交。这样历史能保持线性,很多团队更喜欢这种方式。如果你有尚未推送的本地提交,又不想每次 pull 都多出一个合并提交,就用它。git pull 之后出现冲突怎么办?
本地和远程的改动有重叠时,pull 可能会产生合并冲突。打开有冲突的文件,解决标记出的部分,然后对它们执行
git add,再运行 git commit(合并方式)或 git rebase --continue(变基方式)。如果想放弃这次拉取,运行 git merge --abort 或 git rebase --abort。可以在线练习吗?
可以。打开终端在线编辑器,就能在浏览器里的真实 shell 中运行
git pull,无需安装。Coddy 的免费互动 Git 课程也会一步步教你使用远程仓库。