git 是什么
- 分布式版本控制工具。
- github是代码托管平台。
git 有什么用
- 保存文件的所有修改记录。
- 使用版本号(sha1哈希值) 进行区分。
- 随时可浏览历史版本记录。
- 可还原到历史指定版本。
- 对比不同版本的文件差异。
为什么要使用 git
- 多人协作开发一个大型项目。
- 每个人都在代码库下载代码,然后进行修改,把大家不同版本的代码合在一起上传到平台。
- 公司都会有自己的代码托管平台。
git 基本概念
- 仓库: - 远程仓库:git init --bare创建一个裸仓库。
- 本地仓库:git clone ...克隆远程仓库到本地。
 
- 远程仓库:
- 协议: - http/- https
- ssh- ssh协议是一个验证授权的网络协议。
- 使用 ssh公钥登录git服务器。- 生成公钥和私钥 → ssh-keygen -t rsa。
- 安装 openssh server(可省略)。
- 复制公钥内容到远端服务器 .ssh/authorized_keys。
- git clone ssh://root@123.249.112.139:/root/holo_render/remote_storage
 
- 生成公钥和私钥 → 
 
 
- 配置用户名和邮箱: - 局部配置:git config user.name zcoder git config user.email zcoder@163.com
- 全局配置:git config --global user.name zcoder git config --global user.email zcoder@163.com
 
- 局部配置:
- 版本号:40位sha1哈希值。
- head:当前检出记录的符号引用。

git 基本操作
- 暂存:git add。
- 提交:git commit。
- 推送:git push。
- 拉取:git fetch→ 将远程仓库所包含分支的最新commit-id记录到本地文件。
- 拉取合并:git pull→git fetch + git merge。
- 查看状态:git status。
- 查看历史:git log。
git 逆向操作
- 暂存区 → 本地工作区:git restore -S。
- 本地仓库 → 暂存区:git reset --soft。
- 本地仓库 → 本地工作区:git reset --mixed。
- 本地仓库 → null:git reset --hard。
git 本地仓库整理操作
- 整理上一次提交:git commit --amend→ 相同功能多次提交复用上次提交信息。
- 整理多次提交:git rebase -i hash1 hash2(左开右关)。
- 只在私有仓库,也就是在 develop分支上使用,因为提交的commit-id会发生变化。
git 分支操作
- 查看分支:git branch。
- 创建分支: - git branch develop→ 创建。
- git switch develop→ 切换。
- git checkout -b develop→ 创建并切换。
 
- 删除分支:git branch -d develop。
- 合并分支: - 切换到本地 master分支,拉取远程仓库master最新数据。git switch master git pull
- 切换到 develop分支,把本地master合并到develop。git switch develop git merge master
- 如果有冲突要解决冲突,测试代码,没问题的话就提交。vi api.hpp git add . git commit -m "fix:merge master"
- 切换到本地 master分支,把develop合并到本地master,最后提交到远程仓库。git switch master git merge develop git push origin master
 
- 切换到本地 
git 解决冲突
- 冲突产生原因:不同分支修改了同一文件的同一行或者相邻行。
- 解决原则: - 不要影响其他人提交的功能,也不能破坏自己提交的功能。
- 协商解决。
 
- 解决方式:git merge。
- 建议:提交前先 git pull拉取最新代码。
