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
拉取最新代碼。