git - Git remote -v 有效,但创建新分支时使用了错误的子模块
问题描述
让我从第一个开始,我们有 20 个客户端以同样的方式运行。我没有构建我们当前的 git 系统,但我继承了它。在那个人离开公司之前,我确实得到了一些很好的速成课程信息。
几周前,我克隆了一个以Go-To
现有 repo 命名的 repo Come-From
。它有 3 个分支(主、测试、预览)用于测试,这些分支被推送并用于从网站查看。我们有这个 repo 的 3 个子模块。仅创建了一个已将更改推送到的 WF1 分支(主、测试、预览) 出现的第一个问题是子模块没有更新。我为子模块修复了 git remote -v ,因为当我进行克隆时它们没有指向正确的位置。我能够重置头部并且所有更改都运行良好。我让我们的 Web 团队进行更改并毫无问题地推动。
现在到第二天发生的问题。当发生这种情况时,另一个人检查了 WF1 并进行了更改并推送到(主、测试、预览),它以某种方式创建了名为 Go-To-To-system 的新子模块。现在,我有 6 个子模块,而不是 3 个子模块。我恢复了在问题发生之前对 master、test 和 WF1 进行的修补程序。
从他们看起来正确的分支运行一个新的 git clone。
git clone --recurse-submodules -b preview git@myserver:gitrepos/Go-To.git
cd /go-to/system
git checkout preview
git remote -v
origin git@myserver:gitrepos/Go-To-system.git (fetch)
origin git@myserver:gitrepos/Go-To-system.git (push)
如果我使用编写的适用于所有其他客户端的脚本创建一个新分支。我明白了。
git remote -v
origin git@myserver:gitrepos/Go-To-To-system.git (fetch)
origin git@myserver:gitrepos/Go-To-To-system.git (push)
正确的子模块:Go-To-system
不应该存在的子模块:Go-To-To-system
我已经检查了所有远程 -v 的分支,它们看起来正确。创建新分支时是否需要修复其他问题?
解决方案
我正在从脚本中清除客户端信息,并注意到子模块部分中的此部分。在完成命令之后,这就是导致我们问题的原因。这是我们在名称中使用破折号的第一个客户端,因为脚本使用破折号从 (git remote -v) 中提取 $submodules 的信息。它导致名称的第二部分加倍。
if $createrepo then for submodule in "${submodules[@]}" do cd $submodule; 远程=“$(git远程-v)”;remote="${remote# '-'}"; 远程="${远程%%' ' }";
感谢凯文曼塞尔的帮助。我认为回顾整个脚本有助于我发现问题。我还在学习 bash 脚本和 Git,所以我认为上面部分中的所有符号都让我失去了兴趣。
推荐阅读
- android - 动态添加 .xml 视图
- apache-nifi - 在 CSVRecordSetWriter 转义字符中使用 unicode
- android - Android studio 如何从 SQLlite 中获取数据并将其放在 EditText 上
- rust - 为什么对 const 变量的更改不会在两次使用之间持续存在?
- security - 安全、自动化的 _user 角色创建
- chef-infra - Chef 服务未从更新的 systemd 单元文件中读取
- java - 如何覆盖 Java 类方法
- javascript - 迭代 pug 中的 javascript 对象
- javascript - 检索两个具有相同类的按钮的检查状态以在 if 语句中使用?
- unity3d - 移动设备上 Unity 2D 游戏中的抖动伪影