想翻译 react 的网站,然后发现 github 仓库中,有关网站部分的源码放在子目录 /docs 下,于是想能否单独 folk 子目录 /docs,而且以后只 pull 这个子目录的更新,于是提交记录就只有该目录下的,我就能专心对比提交然后修改对应翻译。
通过阅读下列资源
- Forking a sub directory … part of my own repo
 - Using Git subtrees to split a repository
 - git-subtree/git-subtree.txt
 
找到一种奇葩解决方法,下面逐步讲解
假设 react 仓库长这样
  | 
  | 
我希望我的仓库长这样:
  | 
  | 
其中 /docs 保持跟 react 的 /docs 内容一样,而 /docs-cn 则是我翻译新增的内容
步骤
1. 准备我的仓库
  | 
  | 
2. 拉取 react master 分支
  | 
  | 
自动创建的本地 react-master 分支就相当于 react 库(master分支)
3. 分割子目录成新分支
  | 
  | 
新的分支 react-docs 包含了 /docs 目录的所有内容,长这样
  | 
  | 
4. 子目录指向 react-docs 分支
  | 
  | 
在当前分支创建 app 目录,引用 origin react-docs 分支,可以理解成子目录作为一个子仓库,实际上 react-docs 的角色就是中转站
此时,我的 master 分支长这样
  | 
  | 
之后就可以在 master 增加翻译内容
5. 更新 react-docs
当 react 内容有更新后,拉取 react 最新内容,重新分割
  | 
  | 
注意 split 多了一个参数 –onto, 表明再次生成分支时基于原来 react-docs (HEAD)提交记录形成历史纪录
6. 我的 master 更新子仓库
  | 
  | 
总结
通过 react 仓库分离子目录成为新的(中转)仓库,在我的仓库下建立子目录作为子仓库指向中转仓库,从而达到我的 /docs 目录跟踪 react 的\docs 目录。
note: 为了演示命令,所以没有设置分支跟踪来简化命令。另外你也可以考虑先 clone react 仓库然后再操作。
CC BY-NC-SA 3.0 CN
本著作采用  署名-非商业性使用-相同方式共享 3.0 中国大陆 进行许可
欢迎转载,但转载请注明来自 zhenyong.site,并保持转载后文章内容的完整