如何在git子模块中“提交”更改?

14 浏览
0 Comments

如何在git子模块中“提交”更改?

在我的天真中,我设置了一个git子模块,并将其视为Subversion外部 - 也就是说,现在它充满了我刚意识到尚未提交或推送到任何地方的更改。

有没有一种简便的方法将子模块的更改提交/推送回上游仓库?在Git中,对于以此方式在分离的(但链接的)仓库上进行同时开发,有什么推荐的技术?

0
0 Comments

如何在git子模块中"commit"更改?

问题的原因是:在使用git子模块时,如果想要提交更改,需要分别在子模块和主项目中进行操作。

解决方法如下:

1. 首先,在子模块中进行commit操作:

   $ cd path/to/submodule
   $ git add 
   $ git commit -m "comment"
   $ git push
   

2. 然后,更新主项目以跟踪子模块的更新版本:

   $ cd /main/project
   $ git add path/to/submodule
   $ git commit -m "updated my submodule"
   $ git push
   

需要注意的是,有时候git会将子模块放在一个匿名分支中,此时需要先checkout到某个分支再进行添加和提交操作。

另外,如果在创建子模块时,从github的超级项目中使用文件树,可能会遇到"HEAD detached at ..."的问题,此时需要使用`git checkout master`命令解决。

还有一种解决方案是让子模块跟踪主分支的最新版本,而不是默认的跟踪某个提交。具体可以参考这个链接

此外,如果你没有对子模块仓库的权限,git将不允许你对其进行push操作。解决方案是fork该仓库并进行push。

最后,如果在子模块中进行了push操作,然后在父项目中进行push操作,那么父项目将会更新用于跟踪子模块的提交。这意味着,下次有人克隆你的父项目时,他们将会得到更新后的子模块。

希望这篇文章对你有帮助!

0
0 Comments

在使用git submodule时,有时会遇到无法提交更改的问题。解决这个问题的方法是执行以下命令:git submodule status --recursive。这个命令可以帮助我们跟踪子模块的sha1值,并确保子模块指向我们期望的位置。执行完这个命令后,我们可以使用tortoiseGit提交子模块的更改。

0
0 Comments

问题的原因是想要在git子模块中提交更改,但不知道如何操作。解决方法是使用git push命令的--recurse-submodules选项来一次性提交所有子模块的更改。

在git1.7.11版本中,新增了--recurse-submodules选项来实现这一功能。该选项可以查看绑定到父仓库的子模块的历史记录,并将其推送到远程仓库。

具体的使用方法是使用git push命令加上--recurse-submodules=on-demand选项。这样,所有在要推送的修订版本中发生更改的子模块都将被推送。如果无法推送所有必要的修订版本,则会中止并以非零状态退出。

需要注意的是,这个选项只适用于一层嵌套。无法推送另一个子模块中的子模块的更改。

如果以上方法不起作用,还可以尝试使用git submodule foreach命令来逐个推送子模块的更改。具体的命令是:git submodule foreach git push -u origin master

总结一下,要在git子模块中提交更改,可以使用git push命令的--recurse-submodules选项来一次性提交所有子模块的更改。如果不起作用,可以尝试使用git submodule foreach命令逐个推送子模块的更改。

0