Fetching submodule xxx(模块名) git@gitee.com: Permission denied (publickey).

git 子模块

我们需要在git 仓库中引入另一个git仓库,同时保持这两个仓库各自独立提交和拉取,这就是git子模块可以解决的问题。

添加子模块

在一个主项目中,添加子模块(一个git仓库),如下:

git submodule add git地址/https地址 目录名

$ git submodule add git@gitee.com:fredricen/flask-client.git client

添加完要提交

$ git commit -am "add submodule client"

提交完要推送

$ git push origin master

克隆含有子模块的项目

$ git clone --recurse-submodules git@gitee.com:fredricen/flask-client.git

在包含子模块的项目上工作

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

在主项目目录下,执行
git submodule update --remote 指定模块名(如果不指定,则拉取全部子模块)

$ git submodule update --remote client

也可以直接进入子项目目录,然后执行
git pull

从项目远端拉取上游修改

在主项目目录下,可以直接拉取项目和子模块的修改,执行
git pull --recurse-submodules

$ git pull --recurse-submodules

但是,这里需要注意,如果是在IDE上打开的控制台,比如pycharm的terminal,由于该控制台不是具有管理员权限,所以执行该命令,会报错:

Fetching submodule client
git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Errors during submodule fetch:
        client

解决方法就是,使用git bash,并且git bash是管理员权限用户打开
gitbash
如果设置了ssh密码,会弹窗要求输入:
ssh密码
输入之后,即可正常拉取
拉取正常

在子模块上跟踪修改

首先,进入子模块目录,并检出对应分支

$ cd client
$ git checkout master

并在其上,进行相应修改。
然后,进入主项目目录,执行

$ cd ..
$ git submodule update --remote --merge

进行手动更新子模块,如果有冲突的话,需要进去子模块目录进行处理,不过这里需要注意一下,如果你使用的是pycharm的git工具来进行,最好通过git工具来操作,否则命令行输入的命令可能没有正确提交。

发布子模块改动

git在推送到主项目前检查所有子模块是否已推送,执行

$ git push --recurse-submodules=check

git在推送到主项目前检查所有子模块是否已推送,并按需推送,执行

$ git push --recurse-submodules=on-demand

更多内容,建议参考这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值