标签: git-submodules

如何在Eclipse中为Android开发设置我的Git存储库?

我需要一些帮助才能使用Git/Eclipse正确版本化我的Android项目.
使用单个Android项目设置它没有问题.

但是,如果我将一个或多个第三方Android库添加到我的主项目(例如Facebook SDK),我试图弄清楚设置它的正确和正确的方法.

所以目前我git-submodules用来完成这个,这是我的目录结构:

/project/android-main.git
   +--- /project/android-main/facebook-sdk
Run Code Online (Sandbox Code Playgroud)

我facebook-sdk在我的android-main项目中添加了一个git-submodule .
在Eclipse工作区的android-main项目中,我看到了子文件夹' facebook-sdk'.

然后是kludge:
我必须从/project/android-main/facebook-sdk一个新项目中导入"现有项目" ,以便我可以从android-main项目中将该项目作为库引用.

最后,Eclipse工作区有三个对' facebook-sdk'的引用:

  1. 项目本身在工作区中.
  2. 因为我把它添加为git-submodule,它在android-main项目中显示为一个文件夹.
  3. 另一个文件夹' facebook_sdk_src'由android-main项目中的Android SDK插件创建.

如果我添加更多子模块,这似乎会混乱工作区和主项目.
我做得对吗?
有没有更好的方法将Android库用作Eclipse中的子模块?

eclipse git android git-submodules egit

12
推荐指数
1
解决办法
8830
查看次数

公共仓库中的私人文件夹(子模块)

我有一个公共存储库.在其中我想使用私有的子模块.如果我将这个子模块包含在我的公共仓库中,那么每个人都能看到该子模块的内容吗?

git github git-submodules

12
推荐指数
2
解决办法
3196
查看次数

编写拒绝无效子模块提交的git update hook的最佳方法是什么?

我正在尝试update为git 编写一个钩子,如果子模块被更新为子模块的上游存储库中不存在的提交ID,则会跳转.换句话说,我想强制用户在将更改推送到子模块指针之前将更改推送到子模块存储库.

一个警告:

  • 我只想测试其子上游存储库与父存储库位于同一服务器上的子模块.否则我们开始做一些疯狂的事情,比如在git hook中调用'git clone'或'git fetch',这不会很有趣.

我一直在玩一个想法,但感觉必须有一个更好的方法来做到这一点.这是我计划在更新钩子中做的事情:

  1. 检查传递给钩子的refname,看看我们是否正在更新refs/heads/.如果没有,请尽早退出.
  2. 使用git rev-list得到被推版本列表.
  3. 对于每个修订:
    1. 调用git show <revision_id>并使用一个正则表达式,查看子模块是否已更新(通过搜索`+子项目提交[0-9a-f] +).
    2. 如果此提交确实更改了子模块,请获取该.gitmodules特定commit(git show <revision_id>:.gitmodules)所看到的文件内容.
    3. 使用3.1和3.2的结果获取子模块URL及其更新的提交ID列表.
    4. 检查3.3中创建的列表,对应于将子模块URL映射到文件系统上的本地裸git存储库的外部文件.
    5. cd到3.4中找到的路径并执行git rev-parse --quiet --verify <updated_submodule_commit_id>以查看该存储库中是否存在该提交.如果没有,则以非零状态退出.

(注意:我相信3.2的结果可能会在修订版本中缓存,只要输出git rev-parse --quiet --verify <revision_id>:.gitmodules不会从一个修订版更改为下一个修订版.我将此部分留下来以简化解决方案.)

所以是的,这看起来相当复杂,我不禁想知道是否有一些内部git命令可能会让我的生活变得更轻松.或者也许有不同的方式来思考这个问题?

git hook git-submodules githooks

11
推荐指数
1
解决办法
1698
查看次数

git submodule commit/push/pull

我想使用git子模块.

我需要采取的步骤将我的更改推送到我的项目中

  1. 从子模块目录添加/ commit/push
  2. 从父目录添加/提交/推送

我需要采取措施来拉动项目的变化.

  1. 来自父目录的git pull
  2. 从父目录更新git子模块

从原始仓库更新子模块的步骤

  1. 来自子模块目录的git pull

令我担心的是http://git-scm.com/book/en/Git-Tools-Submodules的以下内容

问题是您通常不希望在分离的HEAD环境中工作,因为它很容易丢失更改.如果你做了一个初始子模块更新,在该子模块目录中提交而不创建一个分支工作,然后再从超级项目运行git子模块更新而不同时提交,(?? update/commit/update将失去更改?) Git会在不告诉您的情况下覆盖您的更改.从技术上讲,你不会失去工作,但你不会有一个分支指向它,所以它将有点难以检索.

要避免此问题,请在使用git checkout -b work或等效工作的子模块目录中创建分支.当您第二次执行子模块更新时,它仍将恢复您的工作,但至少您有一个指针可以返回.

我要修改子模块并且不想搞砸,上面的文档简要提到了失去变化的可能性,我不明白可能导致丢失的原因.

我想知道除了上面列出的更多的其他步骤,我需要采取什么来防止损失.特别是几个团队成员修改子模块,他们需要做些什么不搞乱?

git git-submodules

11
推荐指数
1
解决办法
2万
查看次数

无法从Git仓库中删除子模块

我有一个Git仓库中的子项目,我想删除但是我无法删除.在GitHub Web界面上,子模块显示为黑色(或灰色)文件夹图标,不可单击.

git repo中的子模块

该文件夹存在一些问题,即使我的本地代码在该文件夹中有文件并且我推送到我的存储库,更改也不会应用于GitHub远程.不知何故,此文件夹被忽略.我检查过它不在.gitignore文件中.

在尝试删除我使用的子项目时:

git submodule deinit submodule-name
Run Code Online (Sandbox Code Playgroud)

但它给出了错误

错误:pathspec'submodule-name'与git已知的任何文件都不匹配.你忘了'git add'吗?

这是什么问题?

git github git-submodules

11
推荐指数
2
解决办法
9053
查看次数

自动添加 git 子模块 (.gitmodules)

我有一个包含几个子模块的仓库。我想添加一些其他的,对我来说最快的方法是使用.gitmodules(在我看来应该明确允许任何类型的子模块管理)。

但是,在编辑此文件并添加子模块时,在git submodule init添加任何内容之后(修改前已经存在的子模块除外)。

是否有任何解决方案可以在不经过的情况下添加子模块git submodule add(即,只需编辑.gitmodules文件然后git submodule update --init)?

也就是说,以下工作流应该自动添加子模块“ foo/bar ”:

Add the following to .gitmodules:
    [submodule "foo/bar"]
        path = foo/bar
        url = https://example.com/foo.git

Run the following command after saving:
    git submodule init
    git submodule update

Expected result:
    submodule 'foo/bar' automatically gets added
    it is also updated (the update command)
Run Code Online (Sandbox Code Playgroud)

git git-submodules

11
推荐指数
2
解决办法
3857
查看次数

Git子模块:可以提供对子模块的https和ssh访问吗?

是否可以同时提供对git子模块的https和ssh访问?

有些人可能更喜欢使用https而有些人可能只能使用ssh(例如因为他们在ssh隧道后面).

是否可以提供两个获取子模块的选项?

git ssh git-submodules

11
推荐指数
1
解决办法
856
查看次数

重写子模块历史记录后包含子模块的存储库

在重写了存储库的历史记录之后git filter-branch,所有的SHA都会发生变化.

现在,如果该存储库(让我们称之为X)被用作另一个存储库中的git子模块(让我们调用它Y),我们就遇到了问题.
实际上,Y根据该子模块X中提交的SHA 知道要加载的子模块的版本.由于X现在所有的SHA 都已发生变化,因此Y指向不再存在的SHA.

有没有办法重写它的历史Y,它指向子模块的新提交SHA X(在当前和过去的提交中)?

我猜想,鉴于旧的SHA和新的SHA之间的对应关系,原则上这是可能的,但我担心它会涉及令人讨厌的bash脚本.
还有什么比这更容易了

git git-submodules

11
推荐指数
1
解决办法
668
查看次数

如何在AWS上使用子模块自动部署git存储库?

我的git存储库中有一个子模块,我的目录结构是这样的,

app
  -- folder1
  -- folder2
  -- submodule @5855
Run Code Online (Sandbox Code Playgroud)

我已使用autodeploy服务在AWS上部署了我的代码.现在,在服务器上,我在父目录中有代码,但子模块目录是空的.

Q1)如何在子模块中获取数据.我在服务器上的存储库不是git存储库.我是否需要先将其转换为git repo,然后运行submodule命令才能获得它?

Q2)如何自动化子模块部署?

谢谢

git github git-submodules aws-code-deploy

11
推荐指数
5
解决办法
2859
查看次数

如何修复git中的"修改内容,未跟踪内容"?

目标是提交一个git分支.分支的"git status"输出为:

On branch zeromq_new
Your branch is up to date with 'origin/zeromq'.

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)
  (commit or discard the untracked or modified content in submodules)

      modified:   log4cplus (modified content, untracked content)
      modified:   ../lib/notification/cppzmq (modified content)
Run Code Online (Sandbox Code Playgroud)

目录结构如下所示:

HySecureGateway
???fes
?   ???log4cplus
?       ???.git
?       ???.gitattributes
?       ???.gitignore
?       ???.gitmodules
?       ???catch
?       ?   ???.git
?       ?   ???.gitattributes …
Run Code Online (Sandbox Code Playgroud)

git git-submodules

11
推荐指数
4
解决办法
2万
查看次数

标签 统计

git ×10

git-submodules ×10

github ×3

android ×1

aws-code-deploy ×1

eclipse ×1

egit ×1

githooks ×1

hook ×1

ssh ×1