标签: git-submodules

子模块和“git pull --rebase”

我们最近切换到 git 并尝试使用子模块来包含我们的公共库。

无论我们做什么,我们都无法让“git pull --rebase”在超级或子模块中工作。

我们得到:

james:libraries james$ git pull --rebase
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
Run Code Online (Sandbox Code Playgroud)

即使我们根本没有任何本地更改并且有一个干净的目录,也会发生这种情况。有什么想法我们可能做错了什么吗?

谢谢!詹姆士

git macos git-pull git-submodules

5
推荐指数
2
解决办法
3871
查看次数

git add -p --忽略子模块?

使用时有没有办法忽略脏子模块git add --patch?

我已ignore = dirty按照此处的说明进行设置。这似乎只适用于git status和git diff。我爱git add -p。每次我想添加一个小的更改时,都必须跳过 10 个脏的子模块,这让我很沮丧。

我还没有完全弄清楚git add -i,但看起来它以相同的方式处理脏子模块。

git addition git-submodules

5
推荐指数
1
解决办法
1927
查看次数

重写历史 git filter-branch 创建/拆分为子模块/子项目

我目前正在将 cvs 项目导入 git。
导入后,我想重写历史记录以将现有目录移动到单独的子模块中。

假设我有这样的结构:

file1
file2
file3
dir1
dir2
library

现在我想重写历史记录,以便该目录library始终是 git 子模块。比如说,将指定的目录拆分为它们自己的子模块/子项目

这是我当前的代码:

文件重写子模块(被调用)

cd project
git filter-branch --tree-filter $PWD/../$0-tree-filter --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)

文件重写子模块树过滤器

    #!/bin/bash

    函数 gitCommit()
    {
        取消设置 GIT_DIR
        取消设置 GIT_WORK_TREE
        git添加-A
        if [ -n "$(git diff --cached --name-only)" ]
        然后
            # 需要提交的东西
            git 提交 -F $_msg
        菲
    }

    _git_dir=$GIT_DIR
    _git_work_tree=$GIT_WORK_TREE
    取消设置 GIT_DIR
    取消设置 GIT_WORK_TREE
    _dir=$PWD

    如果[-d“库”]
    然后
        _msg=$(临时文件)
        git 日志 ${GIT_COMMIT}^! --format="%B" > $_msg
        git rm -r --缓存库
        光盘库 …

git url-rewriting subproject git-submodules git-filter-branch

5
推荐指数
1
解决办法
1344
查看次数

添加 -A/commit 主/所有子模块的简单方法

通过使用git add -Aand git commit -a,我显然可以添加/提交对我当前所在的存储库的所有更改。但是,有没有办法将所有子模块包含在添加/提交中并对每个子模块应用相同的提交消息?

git git-submodules git-commit

5
推荐指数
1
解决办法
1183
查看次数

将子模块克隆到目录中

我在项目中创建子模块时遇到问题。如果我直接在存储库根目录中创建子模块,则一切正常。如果子模块更深,则不会克隆存储库。

例如,这按预期工作:

git submodule add git://someproject.com/.git someproject
Run Code Online (Sandbox Code Playgroud)

但是,当我运行以下命令时,项目将被添加到.gitmodules并创建一个空存储库,但不会下拉任何代码(即使在 a 之后git submodule update --init)。该命令不会产生任何输出。

git submodule add git://someproject.com/.git lib/someproject
Run Code Online (Sandbox Code Playgroud)

git git-submodules

5
推荐指数
1
解决办法
1938
查看次数

使用具有只读访问权限的 git 子模块

如何在我只有只读访问权限的 git 子模块中推送更改。

我的问题是当我尝试这样做时git submodule update。我收到一个fatal: reference is not a tree错误

git git-submodules

5
推荐指数
1
解决办法
2926
查看次数

如何在“Github Actions”中克隆公共子模块

这个问答式问题的原因:我花了几个小时才运行它,因为我有一些拼写错误,并认为解决方案更复杂。如果我能在 google 或 Stackoverflow 上找到这样的教程,我会检查拼写错误。

Git 存储库设置:

  • 私有存储库A- 名称:repoA
  • 带有子模块B(公共存储库) - 名称:repoB

目标:

  • 我想运行一个gradle build在repository A > Github Actions

Github 操作工作流

name: Test
on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
Run Code Online (Sandbox Code Playgroud)

问题:

  • 该actions/checkout@v1步骤访问子模块失败

.gitmodules

[submodule "library"]
    path = library
    url = git@github.com:organization/repoB.git

Run Code Online (Sandbox Code Playgroud)

Github 操作步骤Build with Gradle错误

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies …
Run Code Online (Sandbox Code Playgroud)

github git-submodules github-actions

5
推荐指数
3
解决办法
3216
查看次数

Git - 如何更改子模块的 url/路径

这是我的.gitmodules:

[submodule "app/code/EthanYehuda/CronjobManager"]
        path = app/code/EthanYehuda/CronjobManager
        url = https://company@bitbucket.org/some_user/ethanyehuda_cronjobmanager.git
Run Code Online (Sandbox Code Playgroud)

我需要将网址更改为 https://github.com/Ethan3600/magento2-CronjobManager.git

所以我只是改变了它:

[submodule "app/code/EthanYehuda/CronjobManager"]
        path = app/code/EthanYehuda/CronjobManager
        url = https://github.com/Ethan3600/magento2-CronjobManager.git
Run Code Online (Sandbox Code Playgroud)

然后我将文件添加到暂存区并进行了提交:

git add .gitmodules
git commit -m "change url of submodule xy"
Run Code Online (Sandbox Code Playgroud)

然后我执行了git submodule update --init. 但是如果我去app/code/EthanYehuda/CronjobManager展示遥控器,那么我仍然得到https://company@bitbucket.org/some_user/ethanyehuda_cronjobmanager.git

git git-submodules

5
推荐指数
4
解决办法
6315
查看次数

Pycharm 从 Git 子模块导入

我在 Pycharm 中有一个 python 项目,其中有一个嵌套的 Git 子模块。这是文件夹结构:

my-git-repo
    git-submodule-repo
        package1
           foo.py
           bar.py
    package2
        baz.py
    .gitmodules
Run Code Online (Sandbox Code Playgroud)

导入git-submodule-repo的结构如下:

foo.py:
from package1.bar import some_func
Run Code Online (Sandbox Code Playgroud)

但是,Pycharm 不承认这一点,并希望我改为拥有以下内容:

foo.py:
from git-submodule-repo.package1.bar import some_func
Run Code Online (Sandbox Code Playgroud)

这是有问题的,因为我不想更改所有导入git-submodule-repo(这似乎不是一个好的做法,而且不可扩展)并且其中git-submodule-repo有破折号,这对于导入来说不是有效的 Python 语法(我可以) t 重命名回购)。

我还需要一种从git-submodule-repo代码中导入的方法。像这样的东西:

baz.py:
from git-submodule-repo.package1.bar import some_func
Run Code Online (Sandbox Code Playgroud)

但当然没有破折号使其语法无效。这是内容.gitmodules以防万一它有用:

[submodule "git-submodule-repo"]
    path = git-submodule-repo
    url = https://github.com/SomeAccount/git-submodule-repo.git
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

python-import git-submodules pycharm

5
推荐指数
1
解决办法
1631
查看次数

git 子模块 vs npm 包?

我正在使用 git submodule 在项目之间构建和共享组件。该项目尚未投入生产,因此,此时子模块运行良好。

但我担心维护和部署,将其转换为 npm 包是个好主意吗?

git-submodules

5
推荐指数
1
解决办法
3342
查看次数