git 记录
子模块拉取
首先执行git submodule init用来初始化本地配置文件,也就是向.git/config文件中写入了子模块的信息。
git submodule update则是从子仓库中抓取所有的数据找到父级仓库对应的那次子仓库的提交id并且检出到父项目的目录中。
子模块全部拉取
git clone --recursive,Git会自动帮我们递归去拉取我们所有的父仓库和子仓库的相关内容。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
你必须运行两个命令:git submodule init 用来初始化本地配置文件,而 git submodule update 则从该项目中抓取所有数据并检出父项目中列出的合适的提交
不过还有更简单一点的方式。 如果给 git clone 命令传递 --recurse-submodules 选项,它就会自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块。
可以使用以下命令在拉取项目时将父项目及其子项目全部拉取下来
git clone --recurse-submodules https://github.com/chaconinc/MainProject
如果你已经克隆了项目但忘记了 --recurse-submodules,那么可以运行 git submodule update --init 将 git submodule init 和 git submodule update 合并成一步。如果还要初始化、抓取并检出任何嵌套的子模块, 请使用简明的 git submodule update --init --recursive。
git合并
合并单次提交
先迁出目的分支
git checkout dist
再从原分支合并到目的分支
git merge src
单分支合并
查看原分支的提交版本号,例:a807ef4e30b7da
git log src
迁出目的分支,再合并
git checkout dist
git cherry-pick a807ef4e30b7da
最后一定要提交
git pull
多个合并
1.如果想一次合并B、C两个提交,如下:
git cherry-pick A B
2.我想合并从B到D的所有提交
git cherry-pick B…D
注意:
上面提交B要早于D,不然不会成功,而且不会包含提交B,也就是只有C、D两次提交,如果要包含B提交,则要如下:
git cherry-pick B^..D