Bla*_*ack 5 git git-submodules
这是我的.gitmodules:
[submodule "app/code/EthanYehuda/CronjobManager"]
path = app/code/EthanYehuda/CronjobManager
url = https://company@bitbucket.org/some_user/ethanyehuda_cronjobmanager.git
Run Code Online (Sandbox Code Playgroud)
我需要将网址更改为 https://github.com/Ethan3600/magento2-CronjobManager.git
所以我只是改变了它:
[submodule "app/code/EthanYehuda/CronjobManager"]
path = app/code/EthanYehuda/CronjobManager
url = https://github.com/Ethan3600/magento2-CronjobManager.git
Run Code Online (Sandbox Code Playgroud)
然后我将文件添加到暂存区并进行了提交:
git add .gitmodules
git commit -m "change url of submodule xy"
Run Code Online (Sandbox Code Playgroud)
然后我执行了git submodule update --init. 但是如果我去app/code/EthanYehuda/CronjobManager展示遥控器,那么我仍然得到https://company@bitbucket.org/some_user/ethanyehuda_cronjobmanager.git
.gitmodules 保留建议的默认值,您的更改将在设置后续克隆时生效。
一旦有人完成了克隆,生成的存储库就只是一个存储库。您可以进入现有子模块的目录并以通常的方式更改其原始远程 url,但该git submodule命令有一个方便的快捷方式,
git submodule sync
Run Code Online (Sandbox Code Playgroud)
为你填补所有的空白。
sync [--recursive] [--] [<path>…?]将子模块的远程 URL 配置设置同步到中指定的值
.gitmodules。它只会影响那些已经有 URL 条目的子模块.git/config(即它们被初始化或新添加的情况)。当子模块 URL 更改上游并且您需要相应地更新本地存储库时,这很有用。
git submodule sync同步所有子模块,而git submodule sync -- A仅同步子模块“A”。如果
--recursive指定,此命令将递归到注册的子模块中,并同步其中的任何嵌套子模块。
请参阅此答案以获取更多信息。
这些命令将在命令提示符下完成工作,而不会更改本地存储库上的任何文件
git config --file=.gitmodules submodule.Submod.url https://github.com/username/ABC.git
git config --file=.gitmodules submodule.Submod.branch Development
git submodule sync
git submodule update --init --recursive --remote
Run Code Online (Sandbox Code Playgroud)
对我来说,我找到的解决方案不起作用,因为我的存储库的 git 历史记录与新存储库的历史记录完全不同。
\n\n让我解释。我收到了一个 Zip 文件形式的项目。我初始化了一个新的存储库并提交了文件并将其推送到我的位桶中。
\n\n然后我发现,这是一个公共github项目。所以我想更改 github 存储库的 URL。但它们有完全不同的 git 历史记录(我的存储库只有一个初始提交,而 github 存储库包含所有提交。)
\n\n所以仅仅改变 URL 是行不通的。
\n\n所以我不得不删除子模块并重新创建它。
\n\n\n\n\n提示:
\n<name_of_submodule>= app/code/EthanYehuda/CronjobManager (在我的情况下)
删除:
\n\ngit submodule deinit <name_of_submodule>\ngit rm -f <name_of_submodule>\nrm -rf .git/modules/<name_of_submodule>\ngit commit -m "Deleted submodule xy"\nRun Code Online (Sandbox Code Playgroud)\n\n重新添加:
\n\ngit submodule add --force https://github.com/example/foo-bar.git <name_of_submodule>\ngit commit -m "Add submodul xy"\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n正在获取子模块 app/code/EthanYehuda/CronjobManager 错误:\n 服务器拒绝对未指定对象的请求\n 9b677ef0e750acb9292030306bd97a3ee2734c61
\n
\xe2\x86\x91 如果在克隆(例如登台)上拉取项目后出现这样的错误,那么您必须执行sync以下update --init操作git pull:
git submodule sync\ngit submodule update --init\nRun Code Online (Sandbox Code Playgroud)\n