- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE1
PAGE1
Git高级特性概览
1重置与撤销的基本概念
在Git中,重置和撤销是两个强大的特性,用于帮助开发者管理代码历史,处理错误提交,以及在开发过程中进行代码的回滚。理解这两个概念对于高效地使用Git至关重要。
1.1重置(Reset)
重置是Git中用于将工作目录、暂存区或提交历史回滚到先前状态的命令。它有三种主要的模式:
--soft:只移动提交指针,不改变暂存区或工作目录。
--mixed:移动提交指针,清空暂存区,但不改变工作目录(这是默认模式)。
--hard:移动提交指针,清空暂存区,并将工作目录恢复到指定的提交状态。
1.1.1示例
假设你有以下的提交历史:
A-B-C-D-E
其中,E是当前HEAD指向的提交。
使用--soft模式重置到C:
gitreset--softC
这将把HEAD指针移动到C,但暂存区和工作目录保持不变。
使用--mixed模式重置到C:
gitresetC
或者
gitreset--mixedC
这将把HEAD指针移动到C,并清空暂存区,但工作目录中的文件状态保持不变。
使用--hard模式重置到C:
gitreset--hardC
这将把HEAD指针移动到C,清空暂存区,并将工作目录恢复到C的状态。
1.2撤销(Revert)
撤销是创建一个新的提交,以撤销先前提交的更改。与重置不同,撤销不会改变历史,而是通过创建新的提交来“修复”历史。
1.2.1示例
假设你有以下的提交历史:
A-B-C-D-E
其中,E包含了一些你想要撤销的更改。
撤销E的更改:
gitrevertE
这将创建一个新的提交F,其效果是撤销E的更改,但保留了E在历史中的位置。
A-B-C-D-E-F
在F中,E的更改被逆向,但E仍然在历史中,这有助于保持历史的完整性。
2Git钩子的介绍与分类
Git钩子(Hooks)是Git提供的一系列脚本,用于在Git生命周期的特定点上执行自定义动作。它们可以用于自动化任务,如构建、测试,或用于强制执行项目标准,如代码格式化和提交消息格式。
2.1钩子分类
Git钩子分为两类:客户端钩子和服务器端钩子。
客户端钩子:在本地Git仓库中运行,用于自动化或控制本地操作。
服务器端钩子:在远程Git仓库的服务器上运行,用于控制或自动化服务器端操作,如权限检查和部署。
2.1.1客户端钩子示例
pre-commit:在提交前运行,可以用于检查即将提交的代码是否符合项目标准。
#!/bin/sh
#检查工作目录中是否有未暂存的更改
if[-n$(gitstatus--porcelain)];then
echo工作目录中有未暂存的更改,请先暂存或放弃更改。
exit1
fi
#检查暂存区中的文件是否通过代码格式检查
if!gitdiff--cached--name-only|xargsclang-format-diff-p1--dry-run;then
echo暂存的代码未通过格式检查,请使用clang-format重新格式化代码。
exit1
fi
#如果所有检查都通过,提交继续
echo所有检查通过,提交继续。
exit0
这个脚本首先检查工作目录中是否有未暂存的更改,如果有,则阻止提交。然后,它使用clang-format-diff工具检查暂存的代码是否符合代码格式标准。如果不符合,脚本将阻止提交并提示开发者重新格式化代码。
2.1.2服务器端钩子示例
pre-receive:在接收推送的提交前运行,可以用于检查推送的提交是否符合项目标准或权限要求。
#!/bin/sh
#检查推送的提交是否包含敏感信息
whilereadoldrevnewrevrefname;do
if[$refname=refs/heads/master];then
gitdiff--name-only$oldrev$newrev|grep-qEpassword|secret
if[$?-eq0];then
echo提交中包含敏感信息,推送被拒绝。
exit1
fi
fi
done
#如果所有检查都通过,推送继续
echo所有检查通过,推送继续。
exit0
这个脚本检查推送的提交是否包含敏感信息,如密码或秘密。如果在master分支的提交中检测到敏感信息,脚本将阻止推送并提示用户。这有助于保护项目免受意外泄露敏感信息
您可能关注的文档
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷测试与质量保证.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷风险管理.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷工具与软件:JiraTrello和Asana.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷沟通技巧.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷估算与计划:故事点与理想人日.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷教练的角色与技能.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷开发中的技术实践:结对编程代码审查和重构.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷团队建设与管理.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷项目度量与指标.docx
- 前端开发工程师-软技能与项目管理-Agile-Scrum_敏捷项目中的依赖管理.docx
文档评论(0)