[英]how can I add git submodule into git repo as normal directory?
让我们看看它是什么
sub
& test
mkdir test sub cd test && git init && touch README && git add README && git commit -m "initialize the git repo" && cd .. cd sub && git init && touch README && git add README && git commit -m "initialize the sub git repo" && cd ..
sub
仓库移动到test
mv sub test cd test git add sub git commit -m "add sub directory"
我想将它们视为一个git repo并远程推送它们,但现在不能包含sub
下的文件?
我怎样才能以简单的方式实现这一点,比如将sub视为普通目录?
用例就是这样
我尝试使用Dockerfile
将我的jenkins数据文件夹( JENKINS_HOME
)添加到Dockerfile
进行演示。 ( ADD JEKINS_HOME /opt/jenkins
)
JENKINS_HOME
Dockerfile
我的jenkin有scriptler插件 ,其中包含git repo用于其目的。 然后它存在于我的docker image git repo中,如下所示
$ find jenkins-docker ./.git ./.git/.. (skipped ./Dockerfile ./JENKINS_HOME ./JENKINS_HOME/scriptler ./JENKINS_HOME/scriptler/scripts ./JENKINS_HOME/scriptler/scripts/.git ./JENKINS_HOME/scriptler/scripts/.git/... (skipped) ./JENKINS_HOME/scriptler/scripts/Sample.groovy ./JENKINS_HOME/... (skipped) ./README
似乎你做不到。 名称.git
在源代码中是硬编码的: https : //github.com/git/git/blob/fe9122a35213827348c521a16ffd0cf2652c4ac5/dir.c#L1260
可能有一种方法是创建一个脚本,将.git
重命名为其他内容并在将其添加到repo之前和之后返回
在scripts
下的工作目录中
mv .git hidden-git
在Dockerfile中
RUN mv $JENKINS_HOME/scriptler/scripts/hidden-git
$JENKINS_HOME/scriptler/scripts/.git
或者,可能将GIT_DIR
环境变量传递给插件,因此可以使用其他名称。
git add sub
git commit -m "add sub directory"
我想将它们视为一个git repo并远程推送它们,但现在不能包含子目录下的文件?
它们不包括在内,因为test
将repo sub
视为嵌套的git repo,并且只记录其gitlink或SHA1 ,而不记录它的url,如果sub
已被添加为子模块的话。
您需要先将sub
推送到远程URL,然后将其添加为子模块以进行test
以查看sub
文件。
cd test
git submodule add -- /url/to/sub
或者您需要使用子树
cd test
git subtree --prefix sub /url/to/sub master --squash
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.