Git 的远程版本库(Remote Repository)允许多个开发者协作开发,共享代码。本章将介绍远程仓库的概念、如何管理远程仓库、如何使用远程仓库进行开发、以及远程分支的管理。

13.1 版本库概念

在 Git 中,版本库可以分为裸版本库开发版本库,以及本地与远程版本库。

13.1.1 裸版本库即开发版本库

裸版本库(Bare Repository)

  • 只包含 Git 版本控制数据(.git 目录),不包含工作区文件。
  • 适用于远程共享,不允许直接修改文件。

创建裸仓库:

  1. git init --bare myrepo.git

开发版本库(Working Repository)

  • 既包含 Git 版本控制数据,也包含实际的代码文件。
  • 开发者通常使用开发版本库进行日常开发。

13.1.2 版本库克隆

克隆远程仓库到本地:

  1. git clone <远程仓库地址>

示例:

  1. git clone https://github.com/user/repo.git

13.1.3 远程版本库

查看当前项目的远程仓库地址:

  1. git remote -v

添加新的远程仓库:

  1. git remote add origin <远程仓库地址>

13.1.4 追踪分支

远程分支是远程仓库中的分支的本地副本。可以使用 git branch -r 查看所有远程分支。

  1. git branch -r

13.2 引用其他版本库

13.2.1 引用远程版本库

Git 允许一个本地仓库引用多个远程仓库,例如:

  1. git remote add upstream <上游仓库地址>

获取远程更新:

  1. git fetch upstream

13.2.2 refspec

refspec 定义了本地分支如何与远程分支映射。例如,仅拉取 main 分支:

  1. git fetch origin main:main

推送本地 develop 分支到远程 feature 分支:

  1. git push origin develop:feature

13.3 使用远程版本库的示例

13.3.1 创建克隆版版本库

本地创建新仓库并推送到远程:

  1. git init
  2. git add .
  3. git commit -m "初始化项目"
  4. git remote add origin <远程仓库地址>
  5. git push -u origin main

13.3.2 制作你自己的 origin 远程版本库

当多个开发者协作时,每个人可以在本地推送到自己的远程仓库,并提交 PR(Pull Request)到主仓库。

13.3.3 在版本库中进行开发

  1. 获取最新代码:

    1. git pull origin main
  2. 开发新功能:

    1. git checkout -b new-feature
  3. 提交修改并推送:

    1. git commit -am "添加新功能"
    2. git push origin new-feature

13.4 围绕远程版本库开发周期

13.4.1 预览版本库

查看远程仓库的所有分支:

  1. git branch -r

13.4.2 交替的历史记录

使用 git log --graph --oneline --decorate --all 直观查看提交历史。

13.4.3 非快速推送

如果远程版本库已有新的提交,本地提交可能无法直接推送。可以先拉取最新代码并合并:

  1. git pull --rebase origin main
  2. git push origin main

13.4.4 获取交替历史记录

  1. git reflog

13.4.5 合并历史记录

远程合并分支后,可在本地执行:

  1. git pull origin main

13.4.6 合并冲突

git pull 发生冲突时,Git 会提示手动解决冲突,解决后提交:

  1. git add .
  2. git commit -m "解决合并冲突"
  3. git push origin main

13.4.7 推送合并后的历史记录

  1. git push origin main

13.5 远程版本库配置

13.5.1 使用 git remote

  • 查看远程仓库:

    1. git remote -v
  • 修改远程仓库地址:

    1. git remote set-url origin <新地址>
  • 删除远程仓库:

    1. git remote remove origin

13.5.2 使用 git config

查看 Git 配置:

  1. git config --list

13.5.3 使用手动编辑

  1. vim .git/config

13.6 使用追踪分支

13.6.1 创建追踪分支

当克隆远程仓库时,Git 自动创建 main 的跟踪分支。本地创建一个新的远程追踪分支:

  1. git checkout --track origin/develop

13.6.2 领先和落后

查看本地分支相对于远程分支的状态:

  1. git status

如果落后,执行 git pull 获取最新提交;如果领先,执行 git push 推送新提交。

13.6.3 添加和删除远程分支

创建远程分支:

  1. git push origin new-feature

删除远程分支:

  1. git push origin --delete new-feature

13.7 裸版本库和 git push

裸版本库适用于远程协作环境。创建裸仓库:

  1. git init --bare myrepo.git

将本地仓库推送到裸仓库:

  1. git push --mirror <远程地址>

结论

本章介绍了 Git 远程仓库的概念,包括克隆、推送、拉取、远程分支管理以及版本库的开发流程。掌握这些知识可以帮助开发者高效地进行团队协作。