我正在GitHub上建立一个新的Java项目,我将把一些Apache Commons库作为依赖项.
确定我的项目需要那些jar文件的最佳实践是什么?我应该将依赖项上传到我的GitHub存储库(丑陋)吗?或者使用类似Maven的工具?
或者有没有办法链接另一个git存储库中的文件?Apache为它们的库提供了git存储库.它们是只读的,但我很好,因为我只想使用罐子.坏的是它们包含所有的来源,我只关心编译的jar.看来我们不能git submodule只是一个档案.
我有一个项目,里面有一个子模块。我希望能够克隆父项目并以--recursive该子模块的特定哈希值获取子模块。特定的哈希不是任何分支的头,而是特定的提交。从 svn 的角度来看,将外部与特定修订版挂钩。
我尝试将子模块添加到分支并签出所需的哈希值,但是当我想提交更改时,它保留了添加中的初始哈希值。
仅从SO上的"git子模块"的结果数量来判断,这显然是一个常见且容易混淆的话题,因此我将尽可能精确.
忘记更新/提交/分支子模块的一切(我理解这一点使事情变得非常复杂),为什么每次更改分支时子模块都会被清空?根据我目前的理解,这使分支机构变得昂贵 ; 如果我在机场,不能轻易/廉价地连接怎么办?我做错了什么,还是有一些我还没有意识到的发展理念?
例子永远不会伤害
## make a new project
$> git --version
git version 1.7.5.4
$> mkdir new_proj; cd new_proj; git init
$> touch new_file_1.txt; touch new_file_2.txt
$> git add . && git commit -m "first commit"
## move into some development branch
$> git checkout -b cool_feature
$> <hack hack hack>
# in the middle, I add a submodule
$> git submodule add https://github.com/some/other_proj.git other_proj
$> git submodule update --init
$> ls -lR
new_file_1.txt
new_file_2.txt …Run Code Online (Sandbox Code Playgroud) 我有一个dotfiles存储库,其中我的所有vim插件都存储为子模块,因此它们在更改时很容易更新.我认为这两个命令做了同样的事情,但我注意到情况绝对不是这样.
我知道我有几个子模块的更新,所以我git pull origin master --recurse-submodules从父存储库的根目录运行.它似乎迭代每个子模块,但只从其原始存储库获取更新.
当我运行时,git submodule foreach git pull origin master它实际上git pull origin master在每个存储库中运行,同时执行提取和合并.
有什么用--recurse-submodules?我对它实际上要做的事情感到有点困惑,谷歌对我发现的东西有点神秘.我想也许你聪明的人会有一个更简单的解释.
我已经分叉了MapBox-ios-sdk并对其进行了一些更改.更新版的sdk就在这里,我将更改合并到了fork中.MapBox-ios-sdk还包含SMCalloutView,它是MapBox-ios-sdk中的子模块.然而,官方sdk的版本使用了更新的,更新的SMCalloutView,它不在我的分支中.
我如何让它更新
我用这里的说明更新了我的sdk .但是,这不会更新SMCalloutView.我也尝试过git submodule update --recursiveMapBox-ios-sdk的级别,没有任何反应.事实证明,这是因为SMCallOutView处于"无分支"状态.为什么它在"没有分支"?如何将所有子模块置于"无分支"状态之外?如果它处于"无分支",那么我永远不会知道需要更新的子模块(或甚至更多嵌套)的子模块或子模块.
我一直在研究从 SVN 迁移到 Git,以便我们可以使用 Gitlab。但有一件事我不确定;我们可以将 Gitlab 中的多个项目指向一个存储库吗?
\n文档说:
\n\n\n项目
\n一个 GitLab 项目大致对应于一个 git 存储库。每个项目都属于一个命名空间,可以是用户或组。如果项目属于用户,则项目所有者可以直接控制谁有权访问该项目;如果项目属于某个组,则组\xe2\x80\x99s用户级权限也会生效。
\n
...但是“大致”是什么意思?
\n我有一个名为“projects”的目录,它是父目录,在我的项目附近有 200 个子目录。
现在我正在git pull通过以下脚本执行。
#!/bin/bash
find . -type d -name .git -exec sh -c "cd \"{}\"/../ && pwd && git pull && echo -e '-------------------- \n ' " \;
Run Code Online (Sandbox Code Playgroud)
有没有什么有效的方法可以以多线程和更快的方式完成这个过程?
--depth使用 git 2.4.3 (Fedora 22),我可以使用和选项克隆存储库-b:
$ git clone --depth 1 -b release https://github.com/adobe-fonts/source-code-pro.git fonts/source-code-pro
Cloning into 'fonts/source-code-pro'...
remote: Counting objects: 114, done.
remote: Compressing objects: 100% (113/113), done.
remote: Total 114 (delta 1), reused 105 (delta 1), pack-reused 0
Receiving objects: 100% (114/114), 7.27 MiB | 2.85 MiB/s, done.
Resolving deltas: 100% (1/1), done.
Checking connectivity... done.
Run Code Online (Sandbox Code Playgroud)
理论上git submodule add应该支持相同的选项。不幸的是它似乎不起作用:
$ mkdir foo
$ cd foo
$ git init
Initialized empty Git repository in /spare/local/arankine/foo/.git/ …Run Code Online (Sandbox Code Playgroud) 完成问题重写
所以我认为我非常简单直接地解释了这个问题,但似乎我过于简单了,所以这里是所有额外的细节.希望这有助于每个人看到这也不是重复.
我有一个存储库(项目),我希望自动化将提交从分支中的一个目录推送到另一个分支的过程; 我还没有遇到过的东西.
这是我的项目的完整结构:
[PROJECT MASTER BRANCH]
|- gh-pages (directory)
|- css (directory)
|- index.html (file)
|- readme.md (file)
[PROJECT gh-pages BRANCH]
|- (empty at the moment)
Run Code Online (Sandbox Code Playgroud)
我希望做的是创建一个钩子,它将从主分支中自动处理我的gh-pages目录中的更改,并通过gh-pages分支复制/克隆/替换它们(无论哪个术语使用正确),项目网站分支.这是一个省略所有其他文件的示例:
[PROJECT MASTER BRANCH]
|- gh-pages (directory) <=== SEE UPDATE BELOW [A]
| |- css (directory)
| | |- style.css (file)
| |- index.html (file)
[PROJECT gh-pages BRANCH]
|- css (directory) <=== SEE UPDATE BELOW [B]
| |- style.css (file)
|- index.html (file)
Run Code Online (Sandbox Code Playgroud)
我对这个级别的Git Hub完全陌生.我通常只是坚持基础,从不使用终端/外壳.总而言之,为了澄清我希望做的事情,我想:
这是我尝试使用的一些post-receive钩子代码(我是通过研究一些东西来实现的)但它不起作用: …
我正在尝试设置一个通用的 .gitmodules 文件,用作新项目始终需要的特定静态数量的子模块的模板。然后使用从 .gitmodules 恢复 git submodules 中显示的技术一次性初始化子模块:
#!/bin/sh
#set -e
git config -f .gitmodules --get-regexp '^submodule\..*\.path$' |
while read path_key path
do
url_key=$(echo $path_key | sed 's/\.path/.url/')
url=$(git config -f .gitmodules --get "$url_key")
branch_key=$(echo $path_key | sed 's/\.path/.branch/')
branch=$(git config -f .gitmodules --get "$branch_key")
if [ ! -d "$path" ]; then
echo URL - $url, Path - $path, Branch - $branch
if [ -n "$branch" ]; then
branch="-b $branch"
fi
git submodule add --force $branch …Run Code Online (Sandbox Code Playgroud)