git

git submodule

git submodule 应用场景 问题 高级命令 git将submodule有关的信息保存在两个地方: .gitmodules在仓库中,有版本控制,修改之后会同步到其他

git tag 标签

标签不能像分支一样来回移动. 分为轻量标签(lightweight)与附注标签(annotated) 轻量标签:很像一个不会改变的分支, 只是一个

git 分支

HEAD git branch git checkout 合并分支 拉取分支 删除远程仓库分支 分支引用 HEAD HEAD:一个指针, 指向当前所在的本地分支 HEAD 分支随着提交操作自动向前移动 检出时 HEAD 随之移动

git 别名管理

使用git config为命令设置别名 输入 git cpick commit-id 就可以引用某次提交 git config --global alias.cpick cherry-pick git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status 使用git config新建

github 账户管理

添加 SSH ke 到 github 账户 检查 .ssh 文件夹是否有密钥 ls ~/.ssh/ 没有的话生成密钥 ssh-keygen -t rsa -C "your_email@example.com" 添加 SSH key 到 ssh-agent # 后台启动 ssh-agent eval $(ssh-agent -s) # 添加 key ssh-add ~/.ssh/id_rsa 在 github 的个人设置中添加一个 ssh-key 也可

关于 gitignore 文件

格式规范 通配符 斜线 两个星号 ”!” 取消忽视 忽略文件示例 参考 格式规范 所有空行或者以 # 开头的行都会被 git 忽略 可以使用标准的 glob 模式匹配 glob 模式指 shell 所使用的简

制造历史

git fast-import git fast-export git fast-import git fast-import支持从一个特定格式的文本读入,从头创建 git 历史记录 可用这个命令很快写一个脚本运行一次,一次迁移整个项目 写一

常见场景

1 恢复之前删除的文件 2 将 dev 分支快速合并到 master 分支 3 将基于 server 分支的 client 分支的提交和 server 的提交快速合并到 master 分支 4 从所有提交中删除某文件 5 将 dev 新提交的代

重写分支

git filter-branch 参考 git filter-branch # 从所有提交中删除文件 filename # 当提交中不包含此文件时,`rm filename`会失败提交,可使用`rm -f filename` git filter-branch --tree-filter 'rm filename' HEAD # 比 --tree-filter 更快 git filter-branch

重设状态

将当前分支的 HEAD 重设到指定的状态 语法 git reset [<mode>] [-q] [<commit>] mode 包括--soft | --mixed [N] | --hard | --merge | --keep 设置当前分支的 HEAD 到 <commit> mixed 是默认模式 reset 之前,git 会保存原本的 HEAD