切换submodule的仓库
修改.gitmodules后执行
1 2 3
| git submodule sync git submodule init git submodule update
|
submodule在init时的HEAD是独立于对应的仓库的(它只是一个指向对应commit的指针),要让submodule的修改引用于其对应的仓库,见:
https://stackoverflow.com/questions/9189575/git-submodule-tracking-latest
https://stackoverflow.com/questions/5828324/update-git-submodule-to-latest-commit-on-origin
https://stackoverflow.com/a/19872486
总结:
1
| git submodule update --remote --merge
|
可以确保拉取的是仓库中的最新版,然后自己手工或脚本在update后checkout每个submodule到master分支
重定向HEAD到master(<path>
记得修改成自己的仓库路径)
1 2
| repoPath=$(git rev-parse --show-toplevel) git submodule foreach --recursive 'branchName=$(git config -f $repoPath/.gitmodules submodule.$name.branch);git checkout $branchName'
|
从仓库移除submodule
1 2
| git submodule deinit <submodule name> git rm --cached <submodule name>
|
迁移git仓库
1 2
| git clone --bare [url from] git push --mirror [url to]
|
删除本地分支
1
| git branch -d [branchname]
|
使用其他ssh
环境变量GIT_SSH
可以指定使用的ssh连接命令,因此可以通过这个来改变使用的公钥
1
| git config core.sshCommand "ssh -i ~/.ssh/id_rsa_example -F /dev/null"
|
https://www.cnblogs.com/chenkeyu/p/10440798.html
路径相关
1 2 3 4
| # 获取当前所在仓库根目录在本机上的绝对路径 git rev-parse --show-toplevel # 获取仓库内文件相对于仓库根目录下的路径 git ls-files
|