git回滚代码相关使用
# git revert使用
git revert
是一个用于撤销提交的命令,但它的工作方式与 git reset
不同。git revert
会为每个指定的提交生成一个 新的提交,这个新的提交会撤销原来的提交内容,而 不会删除历史记录。也就是说,git revert
会保留原有的提交历史,并通过新增的反向提交来撤销更改。
# git revert
的基本用法
撤销单个提交: 如果你只想撤销某个提交(例如撤销第三次提交),可以使用:
git revert <commit_id>
1这个命令会为
<commit_id>
对应的提交生成一个新的提交,撤销该提交的内容,并保留在历史记录中。例如,撤销提交
a1b2c3d
:git revert a1b2c3d
1撤销多个提交: 如果你想撤销多个提交,可以通过指定提交范围来实现。
撤销一系列提交(例如从第三次提交到当前提交):
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
参数意味着所有的撤销操作会被暂存,但不会自动提交,你可以手动修改提交内容后再进行提交。
撤销的提交会影响什么?
git revert
会生成新的提交,撤销某个提交的更改。- 它 不会删除历史提交,只是通过新增的提交反向修改已提交的内容。
撤销提交后自动进入编辑模式:
执行
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
2
3
4
5
6
你想回滚到 提交 3,这时可以使用以下命令:
撤销提交 4, 5, 6(假设你只想撤销这些):
git revert HEAD~3..HEAD
1这个命令会撤销提交
4
,5
,6
,并且创建反向的提交记录。撤销单个提交(例如提交 4): 如果你只想撤销提交 4,而不影响后面的提交,使用:
git revert <commit_id_of_4>
1
# git revert
的优势
保留历史记录:
git revert
的最大优势是它 不会删除历史记录,所以适用于公共仓库,特别是当你已经将提交推送到远程仓库时,它可以安全地撤销提交,不会破坏其他人的工作。逐步撤销: 使用
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
中的冲突?
查看冲突的文件: 当
git revert
发生冲突时,Git 会告诉你哪些文件有冲突,并标记冲突的地方。通常,Git 会在冲突文件中插入类似以下的标记:<<<<<<< HEAD 当前分支的内容 ======= 撤销的提交的内容 >>>>>>> commit_id
1
2
3
4
5你需要手动编辑文件,解决这些冲突。
解决冲突:
- 打开每个冲突的文件,查找
<<<<<<<
,=======
,>>>>>>>
标记。 - 保留你想保留的内容,删除不需要的内容。然后保存文件。
- 确保文件的内容是你希望的状态。
- 打开每个冲突的文件,查找
标记冲突已解决: 解决冲突后,使用以下命令标记冲突已解决:
git add <resolved_file>
1或者,如果解决了多个文件的冲突,可以一次性标记所有已解决的文件:
git add .
1完成提交: 一旦所有冲突解决并添加到暂存区,你可以使用以下命令完成
git revert
提交:git revert --continue
1这会生成一个新的提交,撤销原先提交的更改。
# 如果不想继续 git revert
?
如果你决定放弃当前的 git revert
操作(例如冲突太复杂或不再需要回滚),你可以使用以下命令来中止 git revert
:
git revert --abort
这会放弃当前的回滚操作,并恢复到回滚前的状态。
# 小结:
git revert
会发生冲突,如果被撤销的提交和当前分支的提交有重叠修改。- 解决冲突:你需要手动编辑冲突文件,删除冲突标记,保留你想要的内容,并通过
git add
将解决的文件标记为已解决。 - 继续回滚:冲突解决后,使用
git revert --continue
完成回滚操作。 - 中止回滚:如果需要放弃回滚,使用
git revert --abort
。
希望这些步骤能帮助你解决 git revert
中的冲突问题!
尊敬的各位领导、亲爱的同事们:
大家好!
我是技术部的王文帅,于2024年6月加入公司,转眼间,与大家并肩奋战的半年时光已悄然过去。这段时间里,我深深感受到了公司专业高效的管理体系、务实进取的文化,以及领导和同事们对我工作的信任与支持。在此,我谨向大家表示衷心的感谢!
作为一名PHP工程师,我毕业于华北水利水电大学网络工程专业,拥有9年的项目开发实战经验,曾深度参与培训、零售、美业等多个领域的技术开发工作,积累了全栈开发的经验与能力。加入公司后,我快速融入团队,积极参与并推动多个项目的需求分析与开发落地。在工作中,我始终秉持“业精于勤荒于嬉,行成于思毁于随”的座右铭,力求在每一次的技术实现中追求极致,为团队和公司的发展贡献自己的力量。
今天,我将以感恩之心对过去半年的工作进行总结汇报。这不仅是对自身工作的复盘与思考,更是一个思考改进、展望未来的契机。我期待通过这次述职,与大家分享我的工作心得,也希望能够为团队的进步和公司的发展贡献更多价值。
尊敬的各位领导、亲爱的同事们:
大家好!
我是技术部的王文帅,于2024年6月加入公司,转眼间,与大家并肩奋战的半年时光已悄然过去。这段时间里,我深深感受到了公司专业高效的管理体系、务实进取的工作氛围,以及主管领导和同事们对我工作的信任与支持。在此,向大家表示衷心的感谢!
作为一名PHP工程师,我毕业于华北水利水电大学网络工程专业,拥有9年的项目开发实战经验,曾深度参与培训、新零售、美业多个领域的技术开发工作,积累了全栈开发的经验与能力。加入公司后,我快速融入团队,积极参与并推动多个项目的需求分析与开发落地。在工作中,我始终秉持“业精于勤荒于嬉,行成于思毁于随”的座右铭,力求在每一次的技术实现中追求极致,为团队和公司的发展贡献自己的力量。
今天,我将对过去半年的工作进行总结汇报。这不仅是对自身工作的复盘与思考,更是一个思考改进、展望未来的契机。我期待通过这次述职,与大家分享我的工作心得,也希望能够为团队的进步和公司的发展贡献更多价值。