我有两个git身份,一个是个人身份,另一个是我的雇主.
我的工作项目使用子模块,虽然我可以克隆主回购,但我无法更新子模块.我需要配置什么才能在本地更新子模块而不会出现以下错误?
Fetching origin
From github.com:/work_domain/work_submodule
* branch HEAD -> FETCH_HEAD
error: pathspec 'master' did not match any file(s) known to git.
我的〜/ .ssh目录中有两组id_rsa键:
id_rsa.pub <= personal ssh key
id_rsa_work.pub <= work ssh key
〜/ .ssh /配置文件:
#work acccount
Host github-work
HostName github.com
User git (corrected with info from answers)
IdentityFile ~/.ssh/ida_rsa_work
#personal account
Host github-personal
HostName github.com
User git
Identity ~/.ssh/ida_rsa
当我最初克隆我的工作回购成功时,我使用了调整后的主机映射:
git clone git@github-work:work_domain/repo_name.git
而不是我在工作时通常使用的东西:
git clone git@github.com:work_domain/repo_name.git
在工作项目repo中,.gitmodules文件当然有官方映射:
[submodule "work_submodule"]
path = work_submodule
url = git@github.com:/work_domain/work_submodule.git
根据以下建议,我将.gitmodules属性更新为:
[submodule "work_submodule"]
path = work_submodule
url = git@github-work:/work_domain/work_submodule.git
但仍无法在本地更新子模块.
最佳答案 为了防止意外将子模块的私有URL提交到存储库(取决于您的.ssh / config),您应该改为编辑.git / ssh中的URL.
编辑.gitmodules文件中的URL以使用github-work是一种方法.但是,由于这是项目的文件部分,因此可能会错误地提交.
而是@Chronical在评论中提到的.要仅更改特定结帐的本地设置,您应该改为.git / config中的URL
url = github-work:/work_domain/work_submodule.git
通过更改它而不是.gitmodules,您可以摆脱额外的步骤来清理意外使用错误URL的内容
请注意,如果您执行git子模块同步,则.git / config中编辑的URL将被.gitmodules中的URL覆盖