GitHub中创建私有仓库
GitHub中创建私有仓库
一、本地安装 Git 并配置
安装
1 | # 安装git |
配置
查看与 GitHub 连接的密钥
检查是否已有 SSH 密钥
1
ls -al ~/.ssh
生成新 SSH 密钥
关于 ed25519:这是目前推荐的算法,安全性高且性能好。如果系统不支持,可使用 -t rsa -b 4096 生成 RSA 密钥
1
ssh-keygen -t ed25519 -C "your email"
启动 ssh-agent 并添加私钥
1
2eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
在GitHub中配置生成的密钥
执行命令
1
cat ~/.ssh/id_ed25519.pub
在 GitHub 中找到:Settings -> SSH and GPG keys -> New SSH key
将执行命令后生成的密钥,复制输出的全部内容,按上述路径添加 SSH Key
测试 SSH 连接
1
ssh -T git@github.com
二、关联与推送本地代码
初始化本地项目
1 | cd /path/to/your/project |
注:执行
git add .之前,请务必确认.gitignore已经正确配置。如果不确定,先打开.gitignore检查。
关联远程仓库
将本地仓库与一个远程仓库(GitHub)关联起来。其中 origin 是远程仓库的默认别名
1 | # 没有远程地址时新增 |
后续操作
之后在项目文件夹内进行常规的操作即可
- git add .
- git commit -m “commit message”
- git push
三、添加子模块
本质含义
Git 子模块本质上是一个指向另一个 Git 仓库特定提交(Commit)的“只读指针”。
- 形式:它会在你的主项目根目录生成一个
.gitmodules配置文件,里面记录了子仓库的 URL 和本地存放路径。 - 实质:主仓库并不存储子模块的源文件,只存储一个 40 位的提交哈希值(Commit Hash)。当你把主仓库提交到 GitHub 时,GitHub 记录的是“我的某个子目录,应该去哪个仓库的哪个版本取代码”。
核心价值
为什么要用这个“指针”机制,而不是直接把代码复制进来?
- 解耦与独立演进:子模块可以拥有自己的提交历史、分支和维护者。主项目无需关注子模块的内部开发细节,子模块也能快速迭代,互不干扰。
- 精确锁定版本(构建可复现性):这是最关键的。主项目通过固定的 Hash 值“钉死”了子模块的版本。无论未来子模块更新了多少次,拉取你主项目的人永远拿到的是你测试通过的那个“老版本”,避免了“在我机器上能跑,在你那不行”的兼容性灾难。
- 节省空间与多项目复用:你可以在多个不同的主项目中引用同一个公共库(如基础算法库),且每个主项目都可以锁定该库的不同版本,无需把巨大的公共库代码在各处重复拷贝。
实际应用
下面我们通过一个例子来介绍下具体的操作步骤
添加Butterfly主题为子模块
1
git submodule add https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly
这个命令会做三件事:
将主题仓库克隆到
themes/butterfly目录。在根目录生成
.gitmodules文件,记录了子模块的路径和URL,这个文件需要提交。.gitmodules文件内容大致为:1
2
3[submodule "themes/butterfly"]
path = themes/butterfly
url = https://github.com/jerryc127/hexo-theme-butterfly.git
在主仓库中,将主题文件夹本身记录为一个特殊的“Gitlink”(模式160000),像指针一样锁定它当前的版本(避免因上游主题频繁更新引出的错误)。
提交更改:
1
2git add .gitmodules themes/butterfly
git commit -m "Add butterfly theme as submodule"
将主题添加为子模块后,日常使用会稍作改变:
常规更新:在
themes/butterfly目录下执行git pull,然后回到主仓库提交子模块的变更,以更新指针指向新版本。1
2
3
4
5
6
7
8# 1. 更新主题
cd themes/butterfly
git checkout master # 一般Butterfly主分支为master
git pull
cd ../..
# 2. 提交主仓库的变更
git add themes/butterfly
git commit -m "chore: update butterfly theme to latest version"查看最新Tag(推荐):许多主题会发布稳定版本。你可以进入子模块,切换到指定的发布Tag来获得更稳定的体验。
1
2
3
4
5
6cd themes/butterfly
git tag -l # 列出所有Tag
git checkout tags/5.5.4 # 切换到指定Tag
cd ../..
git add themes/butterfly
git commit -m "chore: pin butterfly theme to 5.5.4"💡 为什么这样更好:这种方式将主题版本牢牢锁定在一个特定Tag上,保证了你和协作者的博客环境完全一致,避免了“跟着master跑,突然出问题”的风险。