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 origingit 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 popgit pull 时冲突问题
如果 git pull 时发生冲突, 那么你需要手动解决冲突
Terminal
# 查看冲突文件
git status
# 手动解决冲突
# 解决完冲突后, 使用 git add 命令将文件标记为已解决
git add <file>
# 继续变基
git rebase --continue