Git学习指南第11章

雨燕双飞 提交于 2020-01-31 22:38:01

1.主项目和子项目之间的关系
子模块  submodule
子树  subtree
2.创建sub版本库
mkdir -p sub/src
echo 'sub' > sub/src/sub.txt
cd sub
git init
git add --all
git commit -m 'init sub'
git branch v1.0
3.创建嵌入子模块的主版本库
mkdir -p submodule/main/src
echo 'main submodule' > submodule/main/src/main.txt
cd submodule/main
git init
4.链接目录  git submodule add /d/git/projects/sub/ sub
5.注册子模块  git submodule init
6.主版本库提交子模块
cd sub
git checkout v1.0
cd ..
git add --all
git commit -m "Submodule added"
7.查看主版本库提交的对象树(commit类型的sub目录)
git cat-file -p 8c7ca65
git cat-file -p 54e6c2ba774f4e9694bae39295e784a9b4c949b6
8.克隆一个带子模块的项目
mkdir -p submodule/clone
cd submodule/clone
git clone /d/git/projects/submodule/main
git submodule init
git submodule update
9.查看子模块被引用提交的散列值  git submodule status
10.更新sub版本库版本
echo 'v2.0' >> src/sub.txt
git add --all
git commit -m "update v2.0"
git branch v2.0
11.使用子模块中的新版本
cd sub
git fetch
git checkout v2.0
cd ..
git add --all
git commit -m "New version of the submodule"
12.主版本库与模块版本库中的文件都被修改
cd sub
echo 'foo' > foo.txt
git add foo.txt
git commit -m 'Changed submodule'
git push
cd ..
echo 'bar' > bar.txt
git add --all
git commit -m "New version of submodule"
13.更新子模块
git submodule init(修改不被接受时git submodule sync)
git submodule update
14.创建嵌入子树的主版本库
mkdir base
echo 'base' > base/base.txt
cd base
git init
git add --all
git commit -m 'base main'
git clone /d/git/projects/subtree/base main
15.嵌入一个子树
cd main
git subtree add --prefix=sub /d/git/projects/sub master
16.嵌入一个合并提交子树
git subtree add --squash --prefix=sub /d/git/projects/sub master
git log --graph --oneline
17.获取子树的新版本
git subtree pull --prefix=sub /d/git/projects/sub v3.0
18.获取没有中间提交的指定提交
git subtree pull --squash --prefix=sub /d/git/projects/sub v3.0
19.分离模块目录中的修改
git subtree split --prefix sub --branch sub/master
git subtree split --rejoin --prefix sub --branch sub/master
20.合并模块版本库中的修改
git checkout sub/master
git fetch /d/git/projects/sub master
git merge FETCH_HEAD
21.将修改传送到模块版本库中并删除临时分支
git push /d/git/projects/sub/ HEAD:master
git checkout master
git branch -d sub/master

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!