Git¶
Git 是一个开源的分布式版本控制系统。
配置 SSH¶
ssh-keygen -t rsa -C "example@email.com" # 生成公钥id_rsa.pub和私钥id_rsa
ssh-add id_rsa # 将私钥加入到ssh代理中,如果失败需先启动ssh-agent(建议设为自动启动)
# 将公钥添加到 Git 服务器(例如 GitHub)
ssh -T git@github.com # 测试是否成功
Question
如果git clone
失败,尝试执行以下命令,配置 Git 使用系统 SSH 而非自带的 SSH.
分支和合并¶
branch¶
# 创建分支
git branch dev
# 查看分支
git branch
# 合并 dev 分支至 master 分支
git checkout master
git merge dev
# 删除分支
git branch -d dev
企业开发中常用的分支策略:
- master:主分支,提供给用户的正式版本;
- develop:开发分支,日常开发使用的分支,开发完成后合并到 master 分支;
- feature:功能分支,从 develop 分支拉取,开发特定的功能,完成后合并到 develop 分支;单人开发可以不推送到远程仓库;
- release:预发布分支,合并到 master 正式版本前,从 develop 分支拉取,进行测试,结束后合并到 master 和 develop 分支;
- bug:bug 分支,从 master 分支拉取,修复 bug,然后合并到 master 和 develop 分支;本地使用,一般不用推送到远程仓库。
checkout¶
stash¶
# 暂存修改至当前分支
git stash
# 或
git stash save "description"
# 查看所有暂存
git stash list
# 查看指定暂存详情
git stash show stash@{1}
# 恢复最新的暂存
git stash [pop|apply]
# 恢复指定的暂存
git stash [pop|apply] stash@{1}
# 清理所有暂存
git stash clear
# 清理指定暂存
git stash drop stash@{1}
commit¶
常用的提交分类:
- feat: 新功能
- fix: 修复 bug
- refactor: 重构代码
- docs: 文档修改
- test: 测试代码
- style: 样式修改
- chore: 构建过程、版本或辅助工具的变动
tag¶
标签可以用于版本管理,方便版本回退。
# 打标签到最新提交的commit
git tag <tag_name>
# 或指定的commit(可以通过 git log 查看)
git tag <tag_name> <commit_id>
# 添加说明
git tag -m <msg> <tag_name>
# 查看所有标签
git tag
# 查看指定标签详情
git show <tag_name>
# 删除指定标签
git tag -d <tag_name>
# 标签默认不会push到远程,除非
git push origin <tag_name>
# 或者推送所有标签
git push origin --tags
.gitignore¶
原则¶
- 忽略系统自动生成的文件,例如
.idea
目录; - 忽略编译生成的文件,例如
.class
文件; - 忽略包含私有信息的文件,例如包含密码或
token
的配置文件。
语法¶
#
开头为注释行;!
把指定文件排除.gitignore
规则之外;/
为目录分隔符;- 以
/
结尾将仅匹配目录; **
匹配多级目录;?
和[]
用法和正则表达式相同。
目录被排除后,无法包含其中单个文件。
已被 Git 控制的文件不受
.gitignore
影响,可以使用命令git rm -r --cached target
移除控制。
例如:
/dir
忽略整个目录*.zip
忽略所有.zip
文件/dir/main.txt
忽略指定文件!/dir/main.txt
不会忽略该文件