开发网站有什么用,音频网站开发,百度网站推广价格,电子商务网站建设评估工具前言
很久没写博客了#xff0c;今天难得闲下来写一次。
不知道大家在使用git的时候有没有遇到过这样的问题#xff1a;发现git submodule特别好用#xff0c;适合用于满足同时开发和部署的需求#xff0c;并且结构清晰#xff0c;方便我们对整个代码层次有一个大概的了…前言
很久没写博客了今天难得闲下来写一次。
不知道大家在使用git的时候有没有遇到过这样的问题发现git submodule特别好用适合用于满足同时开发和部署的需求并且结构清晰方便我们对整个代码层次有一个大概的了解。但是很烦人的一点就是每次做完开发都要一个一个进入仓库提交更改很浪费时间也浪费力气。
尤其是我这种子模块里带子模块的重度用户 这只是顶层模块一共大概有10多个仓库
于是哥们奋发图强为了一劳永逸终于是憋了两坨大的出来大家只要把下面的两个脚本放在顶层的仓库目录下就可以开开心心地使用了 首先是自动pull脚本如果有merge冲突还是不要用为好纯部署用用就行了
#!/bin/bash# 配置凭据帮助器使用可自动提供凭据的方式例如使用 cachestore或者其他支持的方式
git config --global credential.helper store# 获取当前目录下的所有子模块路径
submodules$(git submodule foreach --recursive --quiet echo $PWD/$path)# 移除路径中的最后一个文件夹
submodules$(echo $submodules | xargs -I{} dirname {} | sort | uniq)# 去掉根目录
root_dir$(git rev-parse --show-toplevel)
submodules$(echo $submodules | sed s|$root_dir/||)# 循环遍历子模块并执行 git pull
for submodule in $submodules; doecho Updating submodule: $submodule(cd $submodule# 执行 git pull注意这里假设你的凭据已经被缓存git pull)
donegit pullecho All submodules updated!然后是自动push脚本这个没问题只要你submodule配置好了随便用
#!/bin/bash# 配置凭据帮助器以缓存凭据输入一次密码后之后的推送不再需要密码
git config --global credential.helper store# 获取当前目录下的所有子模块路径并移除主仓库名字
submodules$(git submodule foreach --recursive --quiet echo $PWD/$path)# 移除路径中的最后一个文件夹
submodules$(echo $submodules | xargs -I{} dirname {} | sort | uniq)# 去掉根目录
root_dir$(git rev-parse --show-toplevel)
submodules$(echo $submodules | sed s|$root_dir/||)# 循环遍历子模块并检查是否有待提交的更改
for submodule in $(echo $submodules | tac); do(# 进入目录cd $root_dir/$submodule || exit# 检查是否有未提交的更改if [[ -n $(git status --porcelain) ]]; then# 接受用户输入的 commit messageread -p Enter commit message for $submodule: commit_message# 执行 git add 和 git commitgit add .git commit -m $commit_message# 执行 git pushgit pushelseecho No changes in $submodulefi)
done# 如果有顶层仓库的更改需要提交则进行提交和推送
if [[ -n $(git status --porcelain) ]]; thenecho Pushing changes in top submodule# 接受用户输入的 commit messageread -p Enter commit message for top submodule: commit_messagegit add .git commit -m $commit_messagegit push
elseecho No changes in top submodule
fiecho All submodules pushed注意记得在使用前赋予脚本可执行权限哦
sudo chmod x auto_pull.sh || sudo chmod x auto_push.sh
然后就可以开开心心高效打工了下附使用截图 仓库名称抹掉是战队开发资料保密要求大家谅解一下
欢迎大佬提出指正意见