相关疑难解决方法(0)

git子模块跟踪最新

我们正在将我们(巨大的)项目转移到git,我们正在考虑使用子模块.我们的计划是在超级项目中有三个不同的头:发布,稳定,最新.项目负责人将处理释放和稳定的分支机构.他们将根据需要移动子模块.

问题是"最新"头.我们希望超级项目"最新"头部跟踪所有子模块的主分支(自动).如果能够显示子模块的所有提交历史,那也很棒.

我看过gitslave,但它不是我们想要的.有什么建议?

git git-submodules git-track

130
推荐指数
1
解决办法
8万
查看次数

Git提交公共子模块(master branch)

我有两个或更多的项目(我们称之为ProjectFooProjectBar),它们有一些我放在子模块中的公共代码.

我的理解是,如果我从ProjectFoo中提交子模块的更改,它将处于一个独立的头部,只有所有ProjectFoo克隆才能看到:

(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git commit -am "Common code fix."
(56f21fb0...) $ git push
Everything up-to-date
Run Code Online (Sandbox Code Playgroud)

这可能是因为master分支没有改变.我可能会做类似的事情git checkout master && git merge Everything up-to-date但看起来很难看.可能git reset --hard master会做同样的事情,但似乎更加丑陋.

如何使用项目共享的公共代码,使用它的那些项目中更新?换句话说,提交到该子模块应该更新使用同一子模块的所有各种存储库(存储库,而不仅仅是克隆).

----编辑----

可见我的签出存储库搞砸了并且坏了.它应该从一开始就像那样(在本例中的ProjectFoo上):

(master) $ cd ProjectFooBarCommoneSubmodule/
(master) $ git commit -am "Common code fix."
(master) $ git push
....
   fbfdd71..0acce63  master -> master
(master) $ …
Run Code Online (Sandbox Code Playgroud)

git commit git-submodules

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

为什么git子模块与svn externals不兼容?

有很多网页在那里暗示让svn外部看起来像git子模块的hackish方法.我已经读过一些关于差异的说法,但这似乎不是很基础:

Git子模块链接到另一个项目的存储库中的特定提交,而svn:externals总是获取最新的修订.

为什么这种差异会使它们根本不相容?我们可以假设没有合理的默认值,例如大多数svn:externals指向永不移动的标签吗?

svn git git-svn svn-externals git-submodules

13
推荐指数
1
解决办法
6991
查看次数

git"覆盖"的可能性(仅将差异存储到本地存储库中的extern存储库)?

我想做一些事情,最好在我发现的邮件列表帖子中描述:

git Archives:GIT覆盖存储库(unsw.edu.au)

从两个存储库开始,我们称之为Repo-A和Repo-B.Repo-A托管在某个服务器上,包含大量代码(假设它是一个内核源代码库).Repo-B只是在Repo-A已经提供的东西之上添加了少量的回购(为了论证,比如IPW2100和IPW2200项目).

由于几个原因,我们希望用户能够从我这里获得Repo-A和Repo-B之间的差异.

例如,用户获得完整的Repo-A:[...]
,然后仅覆盖他们从我那里获得的delta:[...]

问题是,我只是找不到任何其他对这个概念的引用(令人沮丧的是搜索努力的另一件事是Gentoo在其包管理器中有一个叫做"git overlays"的东西;而TortoiseGIT有"叠加"图标).线程本身似乎只有一个回复,是从2005年开始,它建议引入" ancestors存储在覆盖存储库中的文件",这可能从未实现过git.虽然该帖子实际上包含用于演示概念的bash脚本,但它们基于rsync-ing iningals .git直接,我对测试并不十分自信.

我的问题是 - 是否有一种标准方式(例如,主要使用git可在上下文中调用的命令或shell脚本git),在这种方式中可以实现这种操作?或者,是否有一些我可以在Linux下使用的"文件系统覆盖"技巧,以实现这种效果?

我认为git可以使用子模块,但显然他们不能; 我准备了一个小脚bash本来测试:

#!/usr/bin/env bash
set -x

rm -rf repoM-git

mkdir repoM-git
cd repoM-git
git init
git config user.name "me"
git config user.email "my@self.com"

git submodule add https://github.com/defunkt/github-gem.git repo1
git submodule add https://gist.github.com/6462971.git repo2

git status
git commit -m "initial checkin"

cd repo1
git config user.name "me"
git config user.email "my@self.com"
SOMETAG=$(git …
Run Code Online (Sandbox Code Playgroud)

git

6
推荐指数
1
解决办法
3356
查看次数

Git - 如何自动将目录中的更改推送到另一个分支

完成问题重写

所以我认为我非常简单直接地解释了这个问题,但似乎我过于简单了,所以这里是所有额外的细节.希望这有助于每个人看到这也不是重复.


我有一个存储库(项目),我希望自动化将提交从分支中的一个目录推送到另一个分支的过程; 我还没有遇到过的东西.

这是我的项目的完整结构:

[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完全陌生.我通常只是坚持基础,从不使用终端/外壳.总而言之,为了澄清我希望做的事情,我想:

  • 只需要在[Master Branch]工作.我需要对[gh-pages Branch]进行的所有更改我在[Master Branch]的gh-pages目录中进行的更改
  • 最好通过添加一个似乎是post-receive hook的简单文件来实现这一点?

这是我尝试使用的一些post-receive钩子代码(我是通过研究一些东西来实现的)但它不起作用: …

git configuration github

5
推荐指数
1
解决办法
1402
查看次数

保持WordPress版本控制 - 单独的主题回购

我在Git下有我的WordPress项目,并将WordPress作为子模块.我想将我的主题开发保存在一个单独的子模块中,但是在当前设置中并且在将主题设置作为子模块时遇到一些困难.

这是我的文件系统:

/.git (master repo)
/index.php
/wp-config.php
/wordpress (WordPress repo as a submodule)
/wp-content 
  themes
     test-theme (theme repo)
        .git
        index.php
        (etc...)
Run Code Online (Sandbox Code Playgroud)

现在,当我将我的主仓库推送到github,并尝试在另一台机器上克隆它时,wordpress子模块下载正常,但我的主题文件夹没有,我得到一个关于未定义子模块的错误.

我尝试使用它将我的主题添加为子模块:

git submodule add ./wp-content/themes/test-theme/.git ./wp-content/themes/test-theme
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:"remote(origin)没有在.git/config中定义的url"

如何将主题回购定义为子模块,当它基本上托管在项目"内部"而不是在线上的单独存储库中时?

谢谢.

git wordpress

3
推荐指数
1
解决办法
1345
查看次数