【笔记碎片】GIT 知识点整理(2)

307 阅读4分钟

提交准则

保持提交干净

1,不要提交无用的变更

不要整体格式化代码,原则上来说一个项目的编码风格是保持一致的,但难免会因为个人配置导致差异。

2,逻辑上的独立变更集

一个问题一次提交,不要把好几个修改放在同一个提交里面,这样保证提交的文件都是针对同一功能点或者问题,方便提交审查或者后面回退及选择。

贮藏与清理

有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是 git stash 命令。

git stash会处理工作目录的脏的状态——即跟踪文件的修改与暂存的改动——然后将未完成的修改保存到一个栈上, 而你可以在任何时候git stash apply重新应用这些改动(甚至在不同的分支上)。

查看贮藏列表

git stash list

删除

git stash drop

只贮藏未暂存的文件

git stash --keep-index

贮存文件包含未跟踪

git stash -u

git stash -a // 包含忽略的文件

清理工作空间

-d移除工作目录中所有未追踪的文件以及空的子目录,-n展示出将要移除的文件。

git clean 命令只会移除没有忽略的未跟踪文件。 任何与 .gitignore 或其他忽略文件中的模式匹配的文件都不会被移除。 如果你也想要移除那些文件,可以给 clean 命令增加一个 -x 选项。

使用-i进入交互式命令操作更加方便

 git clean  -i

高级合并

撤销合并

修复引用

如果只存在于本地仓库中,git mergegit reset --hard HEAD~ 可以重置分支的指向。

还原提交

生成一个新提交的选项,提交将会撤消一个已存在提交的所有修改

git revert -m 1 HEAD

-m 1 标记指出 “mainline” 需要被保留下来的父结点。

还原后再合并分支会显示已经是最新,因为所有差异已被合并。要想再合并分支可先还原撤销😵,git revert <提交>

配置git

配置全局用户名和邮箱

git config --global user.name <name>
git config --global user.email <email>

git钩子

提交工作流钩子

配合 ESLint 、commitlint 等做代码提交格式检查。

  • pre-commit 钩子在键入提交信息前运行。 它用于检查即将提交的快照,例如,检查是否有所遗漏,确保测试运行,以及核查代码。 如果该钩子以非零值退出,Git 将放弃此次提交,不过你可以用 git commit --no-verify 来绕过这个环节。 你可以利用该钩子,来检查代码风格是否一致(运行类似 lint 的程序)、尾随空白字符是否存在(自带的钩子就是这么做的),或新方法的文档是否适当。

  • prepare-commit-msg 钩子在启动提交信息编辑器之前,默认信息被创建之后运行。 它允许你编辑提交者所看到的默认信息。 该钩子接收一些选项:存有当前提交信息的文件的路径、提交类型和修补提交的提交的 SHA-1 校验。 它对一般的提交来说并没有什么用;然而对那些会自动产生默认信息的提交,如提交信息模板、合并提交、压缩提交和修订提交等非常实用。 你可以结合提交模板来使用它,动态地插入信息。

  • commit-msg 钩子接收一个参数,此参数即上文提到的,存有当前提交信息的临时文件的路径。 如果该钩子脚本以非零值退出,Git 将放弃提交,因此,可以用来在提交通过前验证项目状态或提交信息。

  • post-commit 钩子在整个提交过程完成后运行。 它不接收任何参数,但你可以很容易地通过运行 git log -1 HEAD 来获得最后一次的提交信息。 该钩子一般用于通知之类的事情