Git 高效操作指南,撤销、冲突解决与实用技巧

一、代码撤销与回退

  1. 温柔撤销: git reset HEAD^: 撤销最后一次提交,但保留修改内容(适合修改后重新提交)

  2. 彻底回退: git reset --hard <commit-id>: 回到指定提交状态,丢弃之后所有更改(慎用!会丢失代码)

  3. 紧急重置: git reset --hard HEAD: 放弃所有未提交的修改(常用于终止合并冲突)

  4. 温柔重置: git reset --soft origin/xxxx: 将当前分支重置到远程分支的状态,但保留所有本地更改为已暂存状态(适合用于同步远程分支,同时保留本地修改)

  5. 安全撤销: git revert <commit-id>: 新建提交来撤销指定更改(适合已推送的代码)

  6. 选择添加: git cherry-pick <commit-id>: 将指定提交应用到当前分支(适合精准移植特定修改)

二、冲突解决技巧

遇到冲突时,快速选择版本:

  • git checkout --theirs <file> → 采用对方版本

  • git checkout --ours <file> → 保留自己版本

  • git checkout --theirs . → 所有文件用对方版本

  • git checkout --ours . → 所有文件用自己版本

💡 适用场景:合并分支时明确需要采用某一方完整代码

三、提交优化

  1. 修改最近提交
  • git commit --amend -m "新信息" → 修改提交信息
  • git commit --amend --no-edit → 只添加漏掉的文件
  1. 紧急提交
  • git commit --no-verify -m "热修复" → 跳过代码检查钩子(如 ESLint),慎用!

四、高效别名配置

在  ~/.gitconfig  中添加:

[alias]
  ac = "!git add -A && git commit -m"  # 一键提交
  newbr = "!f() { git checkout -b $1; }; f" # 快速建分支

或使用命令添加:

# git 组合命令配置
git config --global alias.ac "!git add -A && git commit -m"
# git 带参数的别名
git config --global alias.newbr "!f() { git checkout -b $1; }; f"

使用示例:

git ac "修复登录bug"
git newbr feature-123