【git】git子模块操作-从子模块的远端拉取上游修改 & 从项目远端拉取更改

1.从子模块的远端拉取上游修改

1.1 在项目子模块目录中,运行git fetch与git merge更新本地代码

(1) 这种方法在获取子模块非master分支的更新时,没成功获取更新,没搞清楚原因;

(2) 如果现在返回主项目并运行git diff --submodule,可以看到子模块被更新的同时,获得了一个包含新添加提交的列表; 如果不想每次运行git diff时都输入--submodule,可以将diff.submodule设置为"log"来将其作为默认行为,即"git config --global diff.submodule log";

1.2 在项目目录中,运行git submodule update --remote;

(1) git会进入子目录然后抓取更新;

(2) 该命令默认user想要更新并检出子模块仓库的master分支,可以通过设置更新并检出子模块的其他分支;

(3) "git config -f .gitmodules submodule.submodule名字.branch  submodule分支名"可以实现(2)中目的;

(4) 当运行git submodule update --remote时,git默认会尝试更新所有子模块,如果有很多子模块的话,可以传递想要更新的子模块的名字(未实践);

(5) 可以通过执行"git config --global diff.submodule log"实现,执行git diff命令时,达到git diff --submodule的效果;

(6) 可以通过执行"git config status.submodulesummary 1",实现执行git status时,显示更详细的内容;

(7) 提交改动后,可以使用git log -p --submodule查看子模块中的提交日志;

2.从项目远端拉取更改

(1) 默认情况下,git pull命令会递归地抓取子模块的更改,但是它不会更新子模块; 此时,执行git status,会显示子模块"已修改",但没有更新;为了完成更新,需要运行git submodule update,最好运行git submodule update --init --recursive;

posted on 2022-07-18 17:33  知北游。。  阅读(744)  评论(0编辑  收藏  举报

导航