Git 的远程版本库(Remote Repository)允许多个开发者协作开发,共享代码。本章将介绍远程仓库的概念、如何管理远程仓库、如何使用远程仓库进行开发、以及远程分支的管理。
13.1 版本库概念
在 Git 中,版本库可以分为裸版本库和开发版本库,以及本地与远程版本库。
13.1.1 裸版本库即开发版本库
裸版本库(Bare Repository):
- 只包含 Git 版本控制数据(
.git
目录),不包含工作区文件。 - 适用于远程共享,不允许直接修改文件。
创建裸仓库:
git init --bare myrepo.git
开发版本库(Working Repository):
- 既包含 Git 版本控制数据,也包含实际的代码文件。
- 开发者通常使用开发版本库进行日常开发。
13.1.2 版本库克隆
克隆远程仓库到本地:
git clone <远程仓库地址>
示例:
git clone https://github.com/user/repo.git
13.1.3 远程版本库
查看当前项目的远程仓库地址:
git remote -v
添加新的远程仓库:
git remote add origin <远程仓库地址>
13.1.4 追踪分支
远程分支是远程仓库中的分支的本地副本。可以使用 git branch -r
查看所有远程分支。
git branch -r
13.2 引用其他版本库
13.2.1 引用远程版本库
Git 允许一个本地仓库引用多个远程仓库,例如:
git remote add upstream <上游仓库地址>
获取远程更新:
git fetch upstream
13.2.2 refspec
refspec
定义了本地分支如何与远程分支映射。例如,仅拉取 main
分支:
git fetch origin main:main
推送本地 develop
分支到远程 feature
分支:
git push origin develop:feature
13.3 使用远程版本库的示例
13.3.1 创建克隆版版本库
本地创建新仓库并推送到远程:
git init
git add .
git commit -m "初始化项目"
git remote add origin <远程仓库地址>
git push -u origin main
13.3.2 制作你自己的 origin
远程版本库
当多个开发者协作时,每个人可以在本地推送到自己的远程仓库,并提交 PR(Pull Request)到主仓库。
13.3.3 在版本库中进行开发
获取最新代码:
git pull origin main
开发新功能:
git checkout -b new-feature
提交修改并推送:
git commit -am "添加新功能"
git push origin new-feature
13.4 围绕远程版本库开发周期
13.4.1 预览版本库
查看远程仓库的所有分支:
git branch -r
13.4.2 交替的历史记录
使用 git log --graph --oneline --decorate --all
直观查看提交历史。
13.4.3 非快速推送
如果远程版本库已有新的提交,本地提交可能无法直接推送。可以先拉取最新代码并合并:
git pull --rebase origin main
git push origin main
13.4.4 获取交替历史记录
git reflog
13.4.5 合并历史记录
远程合并分支后,可在本地执行:
git pull origin main
13.4.6 合并冲突
当 git pull
发生冲突时,Git 会提示手动解决冲突,解决后提交:
git add .
git commit -m "解决合并冲突"
git push origin main
13.4.7 推送合并后的历史记录
git push origin main
13.5 远程版本库配置
13.5.1 使用 git remote
查看远程仓库:
git remote -v
修改远程仓库地址:
git remote set-url origin <新地址>
删除远程仓库:
git remote remove origin
13.5.2 使用 git config
查看 Git 配置:
git config --list
13.5.3 使用手动编辑
vim .git/config
13.6 使用追踪分支
13.6.1 创建追踪分支
当克隆远程仓库时,Git 自动创建 main
的跟踪分支。本地创建一个新的远程追踪分支:
git checkout --track origin/develop
13.6.2 领先和落后
查看本地分支相对于远程分支的状态:
git status
如果落后,执行 git pull
获取最新提交;如果领先,执行 git push
推送新提交。
13.6.3 添加和删除远程分支
创建远程分支:
git push origin new-feature
删除远程分支:
git push origin --delete new-feature
13.7 裸版本库和 git push
裸版本库适用于远程协作环境。创建裸仓库:
git init --bare myrepo.git
将本地仓库推送到裸仓库:
git push --mirror <远程地址>
结论
本章介绍了 Git 远程仓库的概念,包括克隆、推送、拉取、远程分支管理以及版本库的开发流程。掌握这些知识可以帮助开发者高效地进行团队协作。