我的日常开发记录日志
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)

我的日常开发记录日志

never give up
首页
  • Laravel
  • Thinkphp
  • Swoole
  • Workman
  • php
  • HTML
  • CSS
  • JavaScript
  • Vue
  • ES6
  • 小程序
  • Mysql
  • Redis
  • Es
  • MongoDb
  • Git
  • Composer
  • Linux
  • Nginx
  • Docker
  • Vpn
  • 开发实战
  • 开发工具类
  • 友情链接
💖关于
💻收藏
  • 分类
  • 标签
  • 归档数据
GitHub (opens new window)
  • git

    • Git
    • git回滚代码相关使用
      • git revert使用
        • git revert 的基本用法
        • git revert 使用示例
        • git revert 的优势
        • 总结
        • 为什么 git revert 会发生冲突?
        • 如何解决 git revert 中的冲突?
        • 如果不想继续 git revert?
        • 小结:
  • composer

  • linux

  • nginx

  • docker

  • vpn

  • frp

  • 脚本

  • 硬件

  • 运维
  • git
窝窝侠
2024-12-09

git回滚代码相关使用

# git revert使用

git revert是一个用于撤销提交的命令,但它的工作方式与 git reset 不同。git revert 会为每个指定的提交生成一个 新的提交,这个新的提交会撤销原来的提交内容,而 不会删除历史记录。也就是说,git revert 会保留原有的提交历史,并通过新增的反向提交来撤销更改。

# git revert 的基本用法

  1. 撤销单个提交: 如果你只想撤销某个提交(例如撤销第三次提交),可以使用:

    git revert <commit_id>
    
    1

    这个命令会为 <commit_id> 对应的提交生成一个新的提交,撤销该提交的内容,并保留在历史记录中。

    例如,撤销提交 a1b2c3d:

    git revert a1b2c3d
    
    1
  2. 撤销多个提交: 如果你想撤销多个提交,可以通过指定提交范围来实现。

    • 撤销一系列提交(例如从第三次提交到当前提交):

      git revert <commit_id_of_1st_commit>^..<commit_id_of_last_commit>
      
      1

      其中,<commit_id_of_1st_commit>^ 表示包括第一提交的父提交。通过这种方式,git revert 会从 <commit_id_of_1st_commit> 开始,一直到 <commit_id_of_last_commit> 为止的所有提交。

      例如,撤销从 a1b2c3d 到 z9y8x7w 之间的提交:

      git revert a1b2c3d^..z9y8x7w
      
      1
    • 批量撤销多个提交: 如果你知道要撤销的提交是一个顺序的范围,可以使用 git log 查看提交记录,然后将该范围传递给 git revert:

      git revert --no-commit <commit_id_of_first_commit>^..<commit_id_of_last_commit>
      
      1

      --no-commit 参数意味着所有的撤销操作会被暂存,但不会自动提交,你可以手动修改提交内容后再进行提交。

  3. 撤销的提交会影响什么?

    • git revert 会生成新的提交,撤销某个提交的更改。
    • 它 不会删除历史提交,只是通过新增的提交反向修改已提交的内容。
  4. 撤销提交后自动进入编辑模式:

    • 执行 git revert 后,Git 会打开文本编辑器,允许你编辑撤销提交的 commit message。通常,你可以直接保留默认生成的提交信息。

    • 如果想跳过编辑阶段,可以使用 --no-edit 选项来避免打开编辑器。

      git revert --no-edit <commit_id>
      
      1

# git revert 使用示例

假设你有如下的提交历史:

commit 6 (最新的提交)
commit 5
commit 4
commit 3 (目标:回滚到这里)
commit 2
commit 1
1
2
3
4
5
6

你想回滚到 提交 3,这时可以使用以下命令:

  1. 撤销提交 4, 5, 6(假设你只想撤销这些):

    git revert HEAD~3..HEAD
    
    1

    这个命令会撤销提交 4, 5, 6,并且创建反向的提交记录。

  2. 撤销单个提交(例如提交 4): 如果你只想撤销提交 4,而不影响后面的提交,使用:

    git revert <commit_id_of_4>
    
    1

# git revert 的优势

  1. 保留历史记录: git revert 的最大优势是它 不会删除历史记录,所以适用于公共仓库,特别是当你已经将提交推送到远程仓库时,它可以安全地撤销提交,不会破坏其他人的工作。

  2. 逐步撤销: 使用 git revert 时,可以逐个撤销提交,这在复杂的情况中很有用,特别是当你想只撤销某些具体的更改时。

# 总结

  • git revert 会为每个撤销的提交生成一个新的反向提交,不删除任何历史提交。
  • 可以撤销一个提交或一系列提交。
  • 使用 --no-edit 可以跳过提交信息编辑。
  • 避免使用 git reset(特别是 --hard)来回滚已推送的提交,git revert 是撤销提交的更安全方式。

希望这些信息能帮助您更好地理解 git revert 的使用!

# 为什么 git revert 会发生冲突?

git revert 试图创建一个新的提交,该提交的内容是撤销某个旧提交所做的更改。如果在撤销过程中,Git 发现这个撤销操作与当前文件的状态(包括当前分支的提交)有冲突,那么就会报冲突。

例如,如果提交 A 修改了某个文件,并且提交 B 修改了同一个文件的同一部分,而你使用 git revert 撤销提交 A 时,Git 发现提交 B 中也有对这个文件的修改,那么就会发生冲突。

# 如何解决 git revert 中的冲突?

  1. 查看冲突的文件: 当 git revert 发生冲突时,Git 会告诉你哪些文件有冲突,并标记冲突的地方。通常,Git 会在冲突文件中插入类似以下的标记:

    <<<<<<< HEAD
    当前分支的内容
    =======
    撤销的提交的内容
    >>>>>>> commit_id
    
    1
    2
    3
    4
    5

    你需要手动编辑文件,解决这些冲突。

  2. 解决冲突:

    • 打开每个冲突的文件,查找 <<<<<<<, =======, >>>>>>> 标记。
    • 保留你想保留的内容,删除不需要的内容。然后保存文件。
    • 确保文件的内容是你希望的状态。
  3. 标记冲突已解决: 解决冲突后,使用以下命令标记冲突已解决:

    git add <resolved_file>
    
    1

    或者,如果解决了多个文件的冲突,可以一次性标记所有已解决的文件:

    git add .
    
    1
  4. 完成提交: 一旦所有冲突解决并添加到暂存区,你可以使用以下命令完成 git revert 提交:

    git revert --continue
    
    1

    这会生成一个新的提交,撤销原先提交的更改。

# 如果不想继续 git revert?

如果你决定放弃当前的 git revert 操作(例如冲突太复杂或不再需要回滚),你可以使用以下命令来中止 git revert:

git revert --abort
1

这会放弃当前的回滚操作,并恢复到回滚前的状态。

# 小结:

  • git revert 会发生冲突,如果被撤销的提交和当前分支的提交有重叠修改。
  • 解决冲突:你需要手动编辑冲突文件,删除冲突标记,保留你想要的内容,并通过 git add 将解决的文件标记为已解决。
  • 继续回滚:冲突解决后,使用 git revert --continue 完成回滚操作。
  • 中止回滚:如果需要放弃回滚,使用 git revert --abort。

希望这些步骤能帮助你解决 git revert 中的冲突问题!

尊敬的各位领导、亲爱的同事们:

大家好!

我是技术部的王文帅,于2024年6月加入公司,转眼间,与大家并肩奋战的半年时光已悄然过去。这段时间里,我深深感受到了公司专业高效的管理体系、务实进取的文化,以及领导和同事们对我工作的信任与支持。在此,我谨向大家表示衷心的感谢!

作为一名PHP工程师,我毕业于华北水利水电大学网络工程专业,拥有9年的项目开发实战经验,曾深度参与培训、零售、美业等多个领域的技术开发工作,积累了全栈开发的经验与能力。加入公司后,我快速融入团队,积极参与并推动多个项目的需求分析与开发落地。在工作中,我始终秉持“业精于勤荒于嬉,行成于思毁于随”的座右铭,力求在每一次的技术实现中追求极致,为团队和公司的发展贡献自己的力量。

今天,我将以感恩之心对过去半年的工作进行总结汇报。这不仅是对自身工作的复盘与思考,更是一个思考改进、展望未来的契机。我期待通过这次述职,与大家分享我的工作心得,也希望能够为团队的进步和公司的发展贡献更多价值。

尊敬的各位领导、亲爱的同事们:

大家好!

我是技术部的王文帅,于2024年6月加入公司,转眼间,与大家并肩奋战的半年时光已悄然过去。这段时间里,我深深感受到了公司专业高效的管理体系、务实进取的工作氛围,以及主管领导和同事们对我工作的信任与支持。在此,向大家表示衷心的感谢!

作为一名PHP工程师,我毕业于华北水利水电大学网络工程专业,拥有9年的项目开发实战经验,曾深度参与培训、新零售、美业多个领域的技术开发工作,积累了全栈开发的经验与能力。加入公司后,我快速融入团队,积极参与并推动多个项目的需求分析与开发落地。在工作中,我始终秉持“业精于勤荒于嬉,行成于思毁于随”的座右铭,力求在每一次的技术实现中追求极致,为团队和公司的发展贡献自己的力量。

今天,我将对过去半年的工作进行总结汇报。这不仅是对自身工作的复盘与思考,更是一个思考改进、展望未来的契机。我期待通过这次述职,与大家分享我的工作心得,也希望能够为团队的进步和公司的发展贡献更多价值。

在线编辑 (opens new window)
上次更新: 2025/02/25, 18:30:54
Git
Composer

← Git Composer→

最近更新
01
showprocess用法
04-29
02
vue3中尖括号和冒号的使用细则
04-29
03
sd使用
02-22
更多文章>
🖥️

© 2025窝窝侠 💌 豫ICP备20005263号-2 🛀 Theme by 💝 Vdoing && 小胖墩er

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×