Git pull 避免提交历史变复杂
July 26, 2024 by
git pull
是 git fetch
和 git merge
的组合
git fetch
git fetch
命令从远程仓库获取最新的代码到本地, 但不会自动合并代码
Terminal
git fetch <remote> <branch>
示例: 从名为 origin 的远程仓库获取最新代码
Terminal
git fetch origin
git merge
git merge
将另一个分支的更改合并到当前分支
通常在使用 git fetch
获取了最新的远程更改后, 使用 git merge
将这些更改合并到当前分支
Terminal
git merge <branch>
git pull
的过程发生了什么
git fetch
从云端拉取最新代码git merge
将云端代码与本地代码合并
如何保证 git
历史的线性
非常简单, 我们只需要使用 rebase
(变基)命令即可
Terminal
git pull --rebase
自动变基
我们可以配置 git
使其在 pull
时自动变基
Terminal
# git pull 默认使用变基操作
git config --global pull.rebase true
如果你还是执意喜欢 merge
, 那么使用下面的命令
Terminal
# git pull默认使用合并操作
git config --global pull.rebase false
自动变基的问题
如果你本地文件有更改的话, 变基会失败, 因为变基前服务区必须是干净的两个解决办法:
git pull
前, 先使用git commit
暂存代码git pull
前, 先将使用git stash
将保存
git stash
git stash
会将当前工作区的更改暂存起来, 以便你可以在之后的任何时候恢复
Terminal
# 暂存当前工作区
git stash
# 恢复暂存的工作区
git stash pop
git pull
时冲突问题
如果 git pull
时发生冲突, 那么你需要手动解决冲突
Terminal
# 查看冲突文件
git status
# 手动解决冲突
# 解决完冲突后, 使用 git add 命令将文件标记为已解决
git add <file>
# 继续变基
git rebase --continue