===== cherry pick ===== [[https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html|阮一峰的教程]] # 单个提交 git cherry-pick # 连续多个提交 git cherry-pick ===== submodule ===== [[https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97|Git 工具 - 子模块]] * 数字列表项目子模块的配置文件:repo主目录下的 .gitmodules(不建议直接改这个文件) # 创建一个子模块 git submodule add git@gitlab.xxx.com:A/B.git # 创建一个子模块并指定分支和路径 git submodule add -b feature/test001 -- "git@gitlab.xxx.com:A/B.git" "yyy/zzz/B" # 更新子模块(子模块的内容切换为外部 repo 记录的 hash 号) git submodule update --init --recursive # 更新子模块(子模块的内容为对应分支上的最新提交) git submodule update --init --recursive --remote # 列出所有子模块 git submodule ===== 压缩commit ===== [[https://blog.csdn.net/itfootball/article/details/44154121|git中利用rebase来压缩多次提交]] git rebase -i HEAD~4 ===== 修改用户名和邮箱 ===== [[https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2|Git 工具 - 重写历史]] // 设置全局 git config --global user.name "Author Name" git config --global user.email "Author Email" // 或者设置本地项目库配置 git config user.name "Author Name" git config user.email "Author Email" // 修改最近一次提交的用户信息 git commit --amend --author="NewAuthor " ===== 回退到某个版本 ===== git reset --hard fae6966548e3ae76cfa7f38a461c438cf75ba965 ===== 本次提交跳过 precommit 检查 ===== git commit --no-verify -m "xxx"