git 常用命令( rebase和reset)

一、代码的合并

1. 当合并代码并在解决冲突时,想终止当前合并

git reset --merge

2. 终止合并之后,一直是变基状态,想要停止变基

git rebase --abort

3. 在合并代码时,解决完冲突之后,想要提交,先别急着提,先执行continue

git merge --continue

二、git rebase:重置分支状态

模式 作用 风险等级
--soft 仅移动HEAD,不修改暂存区(Index)和工作区(Working Directory)
--mixed (默认)移动HEAD,并重置暂存区,但保留工作区文件修改
--hard 移动HEAD,并丢弃暂存区和工作区的所有修改

典型场景

  1. 撤销未推送的提交
//回退到前一个提交(保留修改到工作区)
git reset HEAD~1 --mixed
//彻底丢弃最近一次提交(包括工作区修改)
git reset HEAD~1 --hard
  1. 取消已暂存的文件
git reset HEAD <file> //取消暂存文件的修改

  1. 修复分支指向:将分支回退到某个历史提交

注意事项:
1.仅限于本地操作:如果提交已推送到远程仓库,强制推送(git push -f)可能导致协作问题。
2.数据丢失:--hard 会永久删除未提交的修改

三、git rebase: 变基整合提交

作用:将当前分支的提交“重新播放”到另一个分支的最新提交之后,整理提交历史,常用于保持提交历史的线性化。

核心用途:

  1. 合并分支:将特性分支的提交变基到主分支上(merge commit)
git checkout feature-branch
git rebase main //将feature-branch 的提交“移植”到main分支的最新提交之后
  1. 整理本地提交:合并多个提交(squash)、修改提交信息或调整提交顺序
git rebase -I HEAD~3 //交互式整理最近3个提交
  1. 同步远程更新:拉取远程分支时使用 git pull --rebase,避免合并提交。
  2. 典型流程:
# 假设当前在 feature-branch
git rebase main        # 变基到 main 分支的最新提交
# 解决可能的冲突
git add .              # 标记冲突已解决
git rebase --continue  # 继续变基
git rebase --abort     # 终止变基(回到原始状态)

总结

特性 git reset git rebase
用途 撤销提交、回退分支状态 整理提交历史、合并提交
影响范围 当前分支的提交历史 当前分支的提交历史(可能影响其他分支)
协作风险 低(仅限本地未推送的提交) 高(若已推送并变基,需强制推送覆盖)
历史修改方式 直接移动 HEAD,丢弃提交 重新应用提交到新的基节点,生成新提交
适用场景 本地回退、撤销修改 保持提交线性、清理历史

最佳实践:

1. git reset:
使用 --soft 或 --mixed 撤销本地提交。
仅在确认需要丢弃修改时使用 --hard。
避免对已推送的分支执行 reset + 强制推送。

2. git rebase:
在合并分支前优先使用 rebase,保持历史整洁。
使用 git pull --rebase 替代默认的 git pull 避免多余合并提交。
不要对公共分支(如 main、dev)执行变基。

posted @ 2025-02-20 10:42  码磊姐姐  阅读(919)  评论(0)    收藏  举报