git常用修改命令

1. 代码回退与历史修改

git reset
模式 命令示例 作用范围 适用场景
--soft git reset --soft HEAD~1 仅移动 HEAD 指针 重新提交之前的修改
--mixed git reset HEAD~1 (默认) 重置暂存区 取消已 add 但未提交的文件
--hard git reset --hard a1b2c3d 彻底丢弃工作区和暂存区 彻底回退到某个版本(慎用!)

git revert

复制代码
git revert <commitid>          # 生成一个反向提交
git revert -m 1 <merge_commit> # 撤销合并提交
  • 特点:安全撤销(保留历史),适合已推送的提交

git commit --amend

bash 复制代码
git commit --amend             # 修改最近提交信息
git commit --amend --no-edit   # 只修改提交内容

注意:仅限未推送的提交!

2. 分支管理

git branch
命令 作用
git branch -f main HEAD~3 强制移动分支指针
git branch -d feature 删除已合并分支
git branch -D hotfix 强制删除未合并分支
git branch --set-upstream-to=origin/main 绑定远程分支

3. 提交与变更查看

git log
bash 复制代码
git log --oneline --graph -n 5       # 简洁图形化历史
git log -p -S "keyword"              # 搜索代码变更
git log --since="2024-01-01" --author="John" # 条件过滤

git show

bash 复制代码
git show HEAD~2:src/main.c          # 查看历史文件内容
git show a1b2c3d --stat             # 显示提交影响的文件

4. 暂存与恢复

git stash
bash 复制代码
git stash push -m "WIP: login feature"  # 暂存并命名
git stash list                         # 查看暂存栈
git stash apply stash@{1}              # 恢复指定暂存
git stash drop stash@{0}               # 删除暂存

git checkout HEAD -- <file>

bash 复制代码
git checkout HEAD -- config.yml  # 从最近提交恢复文件
git checkout a1b2c3d -- .       # 恢复整个目录到历史版本

5. 差异比较与补丁

git diff
命令 比较范围
git diff 工作区 vs 暂存区
git diff --cached 暂存区 vs 最新提交
git diff HEAD~2 HEAD 两个提交间的差异
git diff --word-diff 单词级差异显示

补丁操作

bash 复制代码
git diff > changes.patch       # 生成补丁
git apply --check changes.patch # 测试应用
git apply changes.patch        # 应用补丁
git format-patch HEAD~2        # 生成可邮件发送的补丁

命令对比表

场景 推荐命令 替代方案
撤销本地修改 git checkout HEAD -- file git restore file
修改提交信息 git commit --amend git rebase -i
安全撤销提交 git revert git reset + force push(危险)
暂存临时改动 git stash 手动复制文件

进阶技巧

  1. 组合操作

    bash 复制代码
    # 重置到某个提交但保留工作区修改
    git reset --hard a1b2c3d && git stash apply
  2. 精确回退

    bash 复制代码
    # 仅回退某个文件到指定提交
    git checkout a1b2c3d -- src/main.c
  3. 排查问题

bash 复制代码
# 显示谁最后修改了某行代码
git blame -L 10,15 file.txt
相关推荐
每天敲200行代码4 分钟前
Linux 网络基础(二) (传输协议层:UDP、TCP)
linux·网络·tcp/ip·udp
jstart千语1 小时前
【版本控制】idea中使用git
java·ide·git·intellij-idea·intellij idea
爱莉希雅&&&2 小时前
Linux中服务器时间同步
linux·运维·服务器
廖圣平2 小时前
linux删除大文件日志后之后,df -h还占内存
linux·运维·服务器
飘若随风2 小时前
Linux教程-常用命令系列二
linux
保证四个小时充足睡眠3 小时前
【并行分布计算】Hadoop伪分布搭建
linux
ZaaaaacK3 小时前
守护进程编程
linux·运维·网络
晓龙的Coding之路3 小时前
python生成项目依赖文件requirements.txt
linux·开发语言·python
gblfy3 小时前
DeepSeek + Dify + Ollama + Docker + Linux 私有化部署,构建你的专属私人 AI 助手
linux·docker·dify·本地部署·ollama·deepseek·私有化