fat*_*fat 241 git git-submodules
我有一个项目A,它是一个库,它在项目B中使用.
项目A和B在github BUT上都有一个单独的存储库,我们有一个A的子模块.
我在库中编辑了一些类,这是在repo A中,我推送了远程仓库,所以我们更新了库(repo A).
这些更新不反映子模块引用先前提交的"引用"(子模块)....我应该怎么做才能更新git上的子模块?
Kju*_*uly 321
进入子模块目录:
cd projB/projA
Run Code Online (Sandbox Code Playgroud)
从你的项目A中拉出repo(不会更新你父项目的项目B的git状态):
git pull origin master
Run Code Online (Sandbox Code Playgroud)
返回根目录并检查更新:
cd ..
git status
Run Code Online (Sandbox Code Playgroud)
如果之前更新了子模块,它将显示如下内容:
# Not currently on any branch.
# Changed but not updated:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: projB/projA (new commits)
#
Run Code Online (Sandbox Code Playgroud)
然后,提交更新:
git add projB/projA
git commit -m "projA submodule updated"
Run Code Online (Sandbox Code Playgroud)
Pau*_*her 93
自从git 1.8你可以做到
git submodule update --remote --merge
Run Code Online (Sandbox Code Playgroud)
这会将子模块更新为最新的远程提交.然后,您需要提交更改,以便更新父存储库中的gitlink
git commit
Run Code Online (Sandbox Code Playgroud)
然后在没有这个的情况下推送更改,指向子模块的SHA-1标识将不会更新,因此其他任何人都无法看到更改.
Ada*_*ruk 37
如果更新子模块并提交它,则需要转到包含或更高级别的存储库并在其中添加更改.
git status
Run Code Online (Sandbox Code Playgroud)
将显示如下内容:
modified:
some/path/to/your/submodule
Run Code Online (Sandbox Code Playgroud)
也可以看到子模块不同步的事实
git submodule
Run Code Online (Sandbox Code Playgroud)
输出将显示:
+afafaffa232452362634243523 some/path/to/your/submodule
Run Code Online (Sandbox Code Playgroud)
加号表示您的子模块指向顶部repo期望它指向的位置.
只需添加此更改:
git add some/path/to/your/submodule
Run Code Online (Sandbox Code Playgroud)
并提交它:
git commit -m "referenced newer version of my submodule"
Run Code Online (Sandbox Code Playgroud)
当您向上推动更改时,请确保先推送子模块中的更改,然后在外部仓库中推送参考更改.这样,更新的人将始终能够成功运行
git submodule update
Run Code Online (Sandbox Code Playgroud)
有关子模块的更多信息,请访问http://progit.org/book/ch6-6.html.
And*_*bov 19
单行版
git submodule foreach "(git checkout master; git pull; cd ..; git add '$path'; git commit -m 'Submodule Sync')"
Run Code Online (Sandbox Code Playgroud)
解决方案1
为了简单起见。
运行此命令以获取最新的子模块:
git submodule update --remote --merge
or
git submodule update --remote
Run Code Online (Sandbox Code Playgroud)
现在,我们需要更新父存储库中的引用,可以使用以下命令来完成:
git add <<submodulesfoldername>>
Run Code Online (Sandbox Code Playgroud)
注意: <> == 我的子模块文件夹的名称git add sub-modules(记住用你的代码提交和推送,最新提交的引用将被添加)
解决方案2
如果上述解决方案无法获取最新版本,请尝试以下操作:
git submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
上述答案都不适合我。
这是解决方案,从父目录运行:
git submodule update --init;
cd submodule-directory;
git pull;
cd ..;
git add submodule-directory;
Run Code Online (Sandbox Code Playgroud)
现在你可以git commit并且git push
| 归档时间: |
|
| 查看次数: |
149711 次 |
| 最近记录: |