我在我的机器上以用户A身份登录,但我的回购可以通过我从中提取的服务器上的用户名B访问.该.gitmodules文件有url = ssh://domain.com/abc/def.git.
我该如何配置git以使用用户名B而不是A git submodule update?
所以,我有一个更大的(闭源)项目,并且在这个项目的上下文中创建了一个在其他地方也可以使用的库,我想.
我现在想要在自己的项目中拆分库,它可以作为github或类似的开源.当然,图书馆(及其历史)应该不包含我们项目的痕迹.
git-subtree在这里似乎是一个解决方案,但它并不完全适合.
我的目录布局是这样的(因为它是一个Java项目):
拆分后,我希望库的目录布局如下所示(包括直接在粗体目录中的任何文件):
历史记录还应该只包含主项目历史中涉及存储库这一部分的部分.
第一眼看到了我git-subtree split --prefix=src/de/fencing_ame/transport,但这会
transport(不会编译)和transport/client,transport/server和transport/fencing目录.第一点可以通过git subtree add --prefix=src/de/fencing_ame/transport <commit>在接收端使用来缓解,但我不认为git-subtree可以对导出这些子目录做很多事情.(这个想法真的是只能在这里分享完整的树).
我必须在git filter-branch这里使用吗?
拆分后,我希望能够导入回库在我的主要项目中,无论是使用Git树或混帐子模块,在一个单独的子目录,而不是它现在是.我想象这样的布局
我不小心检查了错误的子模块更新:(作为更大提交的一部分)
-Subproject commit 025ffc
+ Subproject commit f59250
它已被推到遥控器..
如何撤消此更新?
我已经设置了我的环境,所以我可以推送到远程裸存储库,我使用这些命令来设置远程存储库:
$ mkdir ~/website.git && cd ~/website.git
$ git init --bare
Run Code Online (Sandbox Code Playgroud)
和
$ cat > hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/website git checkout -f
$ chmod +x hooks/post-receive
Run Code Online (Sandbox Code Playgroud)
在我的本地环境中:
$ git remote add web ssh://website.com/home/website.git
$ git push web +master:refs/heads/master
Run Code Online (Sandbox Code Playgroud)
现在我可以部署到这个远程使用git push web,一切都很好..
我的项目中有一些子模块没有在远程存储库中初始化/更新...我无法git submodule update在裸机上运行,因为它是裸的,我不能在/var/www/website文件夹上运行它,因为它只是一个副本的文件而不是git repo.
我有我的第一个Git Submodule体验.
我有一些项目依赖于同一个子项目.我保持这些项目同步,所以我使用"子模块分支"功能(例如git submodule add -b master [URL]).
虽然我希望公共GitHub存储库传达子模块关系,但在我自己的工作流程中,我真的只想在我的磁盘上有一个共享代码库的克隆.我想我可以设置子模块,然后用符号链接做一个切换器.但是当我这样做时,我得到了这个:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
typechange: draem
Run Code Online (Sandbox Code Playgroud)
所以Git显然认为它是一个符号链接,而不是跟随目录.
是否有任何工作流程,我似乎可以使用子模块,但我的本地文件系统上只有一个克隆?
目前我一直在试图从Jenkins中检索存储库的子模块.我的配置很好,我可以拉没有任何子模块的存储库就好了.
我还可以使用子模块来获取repo的主要组件(在存储库名称中都使用SSH进行身份验证).只有当我必须拉动子模块组件时才会出现问题.我正在运行最新版本的Jenkins,我在底部添加了一个用于"高级子模块行为"的部分.我在这里选择了"递归更新子模块"并多次运行构建无济于事.
当我尝试使用shell命令在底部添加额外的构建步骤时,存储库的更新也不起作用.当我在终端中的jenkins之外尝试这些命令时,这很好用.我总是在Jenkins得到的问题是:
FATAL: Command "git submodule update" returned status code 1:
stdout:
stderr: Cloning into 'thisismysubmodule'...
fatal: Authentication failed for 'https://git.thisismyrepo.com/scm/ap/thisismysubmodule.git/'
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题:https://issues.jenkins-ci.org/browse/JENKINS-20941但由于安全问题,我无法在底部使用建议的解决方案.这里有没有人有这个问题的经验或可能的解决方案?
该.gitmodule文件仅指定模块存储库URL.怎么git submodule知道要下载哪个版本?它似乎总是检查出最新版本.那么,开发人员如何确保主项目和子模块之间的兼容性?
我正在尝试添加一个已经存在的子模块(不同的git远程存储库).由于我没有在如何正确地进行搜索之前进行搜索,我认为我已经弄乱了我的存储库,我需要一些帮助才能再次修复它.
我已经删除了.gitmodules和.git/config中有关我要删除的子模块的所有相关部分.我还验证了.git /目录中没有modules目录.
但是,当我运行该命令时git rm --cached path_to_submodule,将显示以下消息:
fatal: pathspec 'path_to_submodule' did not match any files
由于上一个命令失败,当我尝试再次使用新定义添加相同的子模块时,运行该命令git submodule add gituser@host:repo.git,这是显示的消息:
'repo' already exists in the index
我正在尝试使用嵌套的git子模块创建一个CocoaPod.我可以创建pod,但是,我无法完全安装它.
当我运行时,pod install --verbose我可以看到git submodule update --init正在运行而不是git submodule update --init --recursive没有拉动嵌套的子模块.
CocoaPods是否支持嵌套子模块,或者不支持?我已经在网上搜索潜在的潜在客户,但找不到任何东西!
我还应该提到我lint传递pod lib lint但不pod spec lint. pod spec lint抱怨它无法在嵌套子模块中找到头文件.我不确定这是否与上述问题有关.
(另请注意,我正在研究的这个特定的Pod只是一个概念证明.我将创建一个更复杂的Pod,它依赖于socket.IO-objc.不幸的是socket.IO-objc不能用作Pod ,并依赖于SocketRocket作为子模块.)
这是我的PodSpec:
Pod::Spec.new do |s|
s.name = "DebugTools"
s.version = "0.1.0"
s.summary = "Awesome tools for debugging iOS apps."
s.homepage = "https://github.com/robertcrabtree/DebugTools"
s.license = 'MIT'
s.author = { "Robert Crabtree" => "me@gmail.com" }
s.source = { :git => "https://github.com/robertcrabtree/DebugTools.git", :tag => s.version.to_s, :submodules => true }
s.platform …Run Code Online (Sandbox Code Playgroud) 我想开始在我的项目网站上使用GitHub Pages.这只需要gh-pages在repo中命名的分支(子树),并提供其内容.问题是网站的一部分(手动,更改日志,下载页面......)是由构建系统自动生成的,所以我想找到gh-pages在主要仓库保持打开时将这些更改提交到分支的最佳方法master(或任何地方).
为了提交gh-pages分支,我可以编写一个脚本,将repo克隆到一个临时目录中,进行修改,提交它们,然后将它们推回到主repo.但这听起来像一个容易出错的过程,所以我希望有一个更简单的方法.
一位朋友建议我可以将gh-pages分支作为子模块添加到主存储库中.我做了一个小实验,但它不太有效:
$ git init main
Initialized empty Git repository in /tmp/main/.git/
$ cd main
$ touch main.txt
$ git add .
$ git commit -m'Initial commit in main branch.'
[master (root-commit) 1c52a4e] Initial commit in main branch.
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 main.txt
$ git symbolic-ref HEAD refs/heads/gh-pages
$ rm .git/index
$ git clean -fdx
Removing main.txt
$ touch index.html …Run Code Online (Sandbox Code Playgroud) git ×10
git-submodules ×10
cocoapods ×1
git-bare ×1
git-config ×1
git-subtree ×1
github ×1
jenkins ×1
symlink ×1
undo ×1
username ×1