我们最近切换到 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 add --patch?
我已ignore = dirty按照此处的说明进行设置。这似乎只适用于git status和git diff。我爱git add -p。每次我想添加一个小的更改时,都必须跳过 10 个脏的子模块,这让我很沮丧。
我还没有完全弄清楚git add -i,但看起来它以相同的方式处理脏子模块。
我目前正在将 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
通过使用git add -Aand git commit -a,我显然可以添加/提交对我当前所在的存储库的所有更改。但是,有没有办法将所有子模块包含在添加/提交中并对每个子模块应用相同的提交消息?
我在项目中创建子模块时遇到问题。如果我直接在存储库根目录中创建子模块,则一切正常。如果子模块更深,则不会克隆存储库。
例如,这按预期工作:
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 submodule update。我收到一个fatal: reference is not a tree错误
这个问答式问题的原因:我花了几个小时才运行它,因为我有一些拼写错误,并认为解决方案更复杂。如果我能在 google 或 Stackoverflow 上找到这样的教程,我会检查拼写错误。
Git 存储库设置:
A- 名称:repoAB(公共存储库) - 名称:repoB目标:
gradle build在repository A > Github ActionsGithub 操作工作流
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) 这是我的.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
我在 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)
任何帮助,将不胜感激!
我正在使用 git submodule 在项目之间构建和共享组件。该项目尚未投入生产,因此,此时子模块运行良好。
但我担心维护和部署,将其转换为 npm 包是个好主意吗?
git-submodules ×10
git ×7
addition ×1
git-commit ×1
git-pull ×1
github ×1
macos ×1
pycharm ×1
subproject ×1