我在我的本地机器(Xcode iOS 项目)上克隆了一个存储库,其中包含 3 个子模块。
其中一个子模块是私有(private)的,我无法访问,所以我在 .git/config
文件中将其注释掉,以便我可以做一些工作。
现在我开始提交我的更改,并看到以下对话框 -
我的问题是 - 如果我单击跳过并将我的更改推送到远程存储库,会发生什么情况。它会影响 pull 我的提交的其他开发人员(有权访问私有(private)子模块的人)吗?我不愿意推送以防它从远程仓库中删除子模块。
希望这是有道理的,并提前感谢您的任何评论或回答。
干杯, 亚当
[更新] This article似乎建议点击跳过将留下任何未提交的更改并且不会被推送到远程。 http://blog.sourcetreeapp.com/2012/02/01/using-submodules-and-subrepositories/
最佳答案
子模块就像存储库中的代码引用。将它们视为指向另一个存储库的指针。
重要的是要了解,当您 check out 子模块时,您的磁盘中存在子模块存储库的本地副本,如果子模块中有任何有意/无意的更改,您将被要求提供上述提示。
回答您的问题:如果您按 skip
,那么只会提交您的 repo 中的更改,并且子模块 remote 将保持不变。如果您依赖子模块中的这些更改,这可能会使您的代码不稳定。
如果您按下 commit
,那么您在子模块中的更改也将被提交。
在子模块中单独进行任何更改并将这些更改 pull 入您的存储库通常是一种很好的做法。如果子模块被积极使用,那么我建议使用依赖管理器或 git 子树来引用它。
关于Git SourceTree - 未提交的子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24910860/