我在搜索时搜索并搜索了一个自动更新(同步)所有子模块的方法。
我有主项目,例如:test
另一个项目,例如: test1
内部测试我已经添加了'子模块名为test1 - >链接到外部项目 test1 。 好的,一切都很好。
所以我将克隆我的主项目TEST,它将带有test1子模块为空。我将运行import sys
from PyQt4 import QtCore, QtGui
from do import Ui_Dialog
class MyApp(QtGui.QDialog, Ui_Dialog):
def __init__(self, parent = None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
self.OK.clicked.connect(self.handleButton)
def handleButton(self):
nume = ""
prenume = ""
mail = ""
varsta = ""
nume = self.line_nume.text()
prenume = self.line_prenume.text()
mail = self.line_mail.text()
varsta = self.spin.value()
print(nume, prenume, mail, varsta)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
和git submodule init
向我提供test1的最新信息。
一切都好!现在我在本地副本上有子模块test1的最新版本(文件/文件)。
现在,我在本地修改了test1中的内容,我想推送它。
当我在test1子模块上点击git submodule update --remote --recursive
时,我有类似这样的内容:
Git branch -a
好的,我会结帐以掌握并合并主编号和修订号,以包含我的修改'在test1 master分支中。
所以我合并了,现在它要求我推动。好的,我会推的。 文件只在 test1 项目中更新(推送),我希望它们也能在test / test1子模块中自动更新......
我做错了吗? 谢谢。
答案 0 :(得分:0)
我不确定你对git子模块有多熟悉,所以我先解释一般行为,因为它对其他读者也有帮助。
您有两个单独的存储库,test
和test1
test1
被添加为test
的子模块。
这会导致以下情况:
test
了解test1
test1
不了解test
test1
签出的情况下提交test
。test1
有自己的git历史记录和提交,在git status
repo文件夹中运行test
将显示与test1
子文件夹中不同的重播。因此,为了更新子模块test1
并在主仓库test
中使用它,您必须执行以下步骤:
git status
应该说modified: test1 (new commits)
test
中提交并推送此修改。进一步解释:
test1
回购的历史记录。test
的子模块,因此主要仓库将显示本地修改,因为它会检查更改的内容。test
只有指向子模块test1
的某个提交的指针。希望这有帮助。
更新:如果您已将子模块test1
签出两次,例如在(a)test/test1
和(b)test1-alone
并修改(b),步骤略有不同:
test/test1
以获取test1-alone
推送的更改。test/test1
的HEAD指向所需的提交。git status
应该说modified: test1 (new commits)
test
中提交并推送此修改。最后两步与上述步骤相同 一般来说:
更新2:如果您将子模块test1签出两次,例如在(a)test / test1和(b)test1-alone并对(a)进行修改,步骤略有不同:
test/test1
。fetch
或pull
远程更改test1-alone
醇>
这与子模块行为无关。这是完全相同的行为,就好像你会在两个不同的位置查看test1
,例如folderA/test1
和`folderB / test1'