git 学习: 合并代码 merge VS rebase
常用的2种合并代码的方式
cheatsheet
操作 | merge | rebase | 说明 |
---|
合并代码之前的暂存 | # 方式1
git add .
git commit -m "feat: save code"
# 方式2<上面方法的简化操作>
git commit -am "feat: save code"
| 同merge | 这个是merge 代码的前提操作 |
常用合并代码 | # 1. 切到当前的分支
git checkout feat/my-feat1
# 2. 取远程的最新更改并应用到你的分支上
git fetch origin
# 3. 合并代码
git merge origin/master
# 4. 可能出现冲突-- 手动处理冲突
# 5.1 继续
git merge --continue
# 5.2 如果出现问题,终止合并
git merge --abort
# 6. push代码到远程
git push
| # 1. 切到当前的分支
git checkout feat/my-feat1
# 2. 取远程的最新更改并应用到你的分支上
git fetch origin
# 3. 合并代码
git rebase origin/master
# 4. 可能出现冲突-- 手动处理冲突
# 5.1 继续
git rebase --continue
# 5.2 如果出现问题,终止合并
git rebase --abort
# 6. push代码到远程
git push
| 正常合并,可能有conflict. 在所有步骤进行之前,记得暂存代码 |
我的实战 | # 1. 切到当前的分支
git checkout feat/my-feat1
# 2. 取远程的最新更改并应用到你的分支上
git pull
# 3. 合并代码
git merge origin/master
# 4. 可能出现冲突-- 手动处理冲突
# 5.1 继续
git merge --continue
# 5.2 如果出现问题,终止合并
git merge --abort
# 6. push代码到远程
git push
| # 1. 切到当前的分支
git checkout feat/my-feat1
# 2. 取远程的最新更改并应用到你的分支上
git pull --rebase
# 3. 合并代码
git rebase origin/master
# 4. 可能出现冲突-- 手动处理冲突
# 5.1 继续
git rebase --continue
# 5.2 如果出现问题,终止合并
git rebase --abort
# 6. push代码到远程
git push origin -f
| |
一些问题
git fetch origin 这个过程为什么不用 git pull 呢?
`git fetch origin` 和 `git pull` 都可以从远程仓库获取最新的提交,但它们之间存在一些区别。
- `git fetch origin`:这个命令会将远程仓库的最新提交下载到本地仓库,但不会自动将这些提交合并到当前分支。它只是获取最新的提交,并更新本地仓库的远程分支引用(例如 `origin/master`)。
- `git pull`:这个命令实际上包含了两个操作:`git fetch` 和 `git merge`。它会先执行 `git fetch` 将远程仓库的最新提交下载到本地,然后自动将这些提交合并到当前分支。
虽然 `git pull` 在一条命令中完成了获取最新提交和合并的操作,但这可能会导致一些问题。如果你在当前分支上有未提交的修改,`git pull` 会尝试将远程提交与你的本地修改自动合并,可能会导致冲突的产生。在这种情况下,你需要手动解决冲突。
相比之下,使用 `git fetch origin` 命令可以将远程仓库的最新提交下载到本地,但不会自动合并。这样,你可以先检查最新的提交内容,然后决定如何处理它们。你可以执行 `git log origin/master` 查看远程分支的提交历史,然后使用 `git merge` 或 `git rebase` 将这些提交合并到你的分支上。
总结来说,`git fetch origin` 提供了更多的灵活性和控制权,可以让你在合并远程提交之前仔细审查和处理。而 `git pull` 则是一个快捷方式,用于快速获取并合并远程提交,但可能会导致自动合并冲突。在多人协作的环境中,推荐使用 `git fetch` 结合 `git merge` 或 `git rebase` 的方式,以避免意外的冲突和问题。