Git 使用
总述
本文参考了孟宁老师的文章五⼤场景玩转 Git,只要这一篇就够了!。
Git,全称为分布式版本控制系统,可以高速处理项目的版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地仓库,也可以提交到远程仓库。
Git 的基本原理
一、本地仓库
1. 创建仓库
git init # 将空文件夹变为本地仓库
git add <file> # 将工作区文件添加到暂存区
git commit -m <message> # 将暂存区文件提交到本地仓库
第一步,创建本地仓库 gitTest,并创建测试文件 brandy.txt
第二步,将 brandy.txt 添加到暂存区
第三步,将 brandy.txt 提交到本地仓库
2. 回退版本
git log --pretty=oneline # 查看提交历史,只呈现一行
git reset --hard <commit-id> # 回退,并修改工作区文件
回退:sherry 版本 → cocktail 版本
第一步,查看提交历史,确定回退 id = 62e34
第二步,回退到 cocktail 版本
撤销回退:cocktail 版本 → sherry 版本
第一步,查看提交历史,确定回退 id = 19afd
第二步,回退到 sherry 版本
3. 撤销修改
git restore <file> # 从暂存区恢复工作区
git restore --staged <file> # 从本地仓库恢复暂存区
二、远程仓库
1. 建立 SSH 连接
ssh-keygen -t rsa -C <message> # 生成 rsa 私钥和公钥
ssh -T git@github.com # 验证是否连接成功
第一步,生成私钥 id_rsa 和 公钥 id_rsa.pub
第二步,将公钥 id_rsa.pub 中的内容复制到 Github → Setting → SSH and GPG keys 处
第三步,验证连接是否成功
2. 操纵远程仓库
git remote # 简单列出远程仓库
git remote add <name> <url> # 添加远程仓库
git push <rep> <branch> # 推送本地仓库到远程仓库
git clone <url> # 克隆远程仓库到本地仓库
三、分支管理
1. 创建分支
git branch # 查看分支
git branch <name> # 创建分支
git branch -d <name> # 删除分支
git switch <name> # 切换分支
git switch -c <name> # 创建并切换分支
git merge <name> # 合并到当前分支
2. 解决冲突
发生冲突
原因:对于 brandy.txt 文件,在 dev 分支提交 Bordeaux 版本,在 master 分支提交 cider 版本,合并时造成冲突。
解决
打开 brandy.txt 文件,将错误信息覆盖后,再次提交,并使用以下命令查看分支合并情况:
git log --graph --pretty=oneline --abbrev-commit # 查看分支合并情况
3. 多人协作
第一步,模拟第二个用户,将远程仓库克隆到本地仓库,修改完成后,将 Gimlet 版本提交到远程仓库。
第二步,第一个用户在第二个用户提交 Gimlet 版本后,将 Manhattan 版本提交到远程仓库,出现报错。
原因:对于远程仓库同一分支下的 brandy.txt 文件,出现两用户的两个版本,产生冲突。
解决
git branch --set-upstream-to=<rep/branch> branch # 设置本地分支与远程分支的链接
git pull # 抓取远程仓库
原因:遇到分支管理中的 2. 解决冲突,解决方法一样
4. Rebase
git rebase -i <commit-id> # 变基
git rebase --continue # 继续变基
原先分支情况
变基
之后分支情况
结语
Git 的指令十分广泛,只一些基本指令就令人惊奇,希望在今后能不断加深对 Git 的学习与理解。