标签: git-subtree

git push 一个子目录到另一个主仓库

我有一个很大的主项目,其中有几个目录作为子树

我想一个特定子树中的更改送到其原点,这是一个单独的存储库。

问题似乎是,我想要推送的当前子树最初并不是来自我想要推送的存储库。它来自不同的 repo,通过我通过谷歌搜索找到的子树指南。它看起来非常相似。

大项目布局,important_subtree我担心的事情在哪里。

~/devel/bigproject
  .git/
  some_subtree/
  other_subtree/
  important_subtree/
    abc.txt
    efg.txt   <--- new version
    hij.txt
Run Code Online (Sandbox Code Playgroud)

并且important_subtree与该回购“密切相关”:

~/devel/important
   .git/
    abc.txt
    efg.txt   <--- old version
    hij.txt
Run Code Online (Sandbox Code Playgroud)

现在~/devel/bigproject/important_subtree/efg.txt发生了变化,我想将 important_subtree 推送到 repo 上~/devel/important。所以后来~/devel/important/efg.txt也有变化。

我设法做的唯一的事情是推动推动一切bigproject重要,这显然不是我想要的。应该只推送子树中的更改。

git git-push git-subtree

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

如何使用git和buidout在没有符号链接的情况下使用共享子应用程序构建python项目

我有多个项目与其他项目共享子应用程序.在项目目录中工作时,我希望能够对应用程序进行更改,更新它,并将这些更新提取到第二个项目中.

需求:

  • 不使用符号链接(我的IDE的调试器不适合它们)
  • 没有编译/重新运行脚本.我想对应用程序进行更改,而无需重新运行脚本/ buildout.
  • 应用必须位于项目文件夹中.

这是结构:

app_one (git repo)
  |-- app_one (actual app uses by projects)
  |   +-- models.py
  |-- README.md
  +-- setup.py

project_one  (git repo)
  |-- project_one
  |   |-- apps
  |   |   |-- app_one
  |   |   |   +-- models.py
  |   |   | -- app_two
  |-- setup.cfg
  +-- setup.py

project_two  (git repo)
  |-- project_two
  |   |-- apps
  |   |   |-- app_one (same app …
Run Code Online (Sandbox Code Playgroud)

python git buildout git-submodules git-subtree

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

将 git 子树移动到不同的存储库

我尝试将目录及其所有历史记录从存储库移动到另一个存储库。

提取目录的完整历史记录很容易git subtree split

这会创建一个新分支,可以轻松地将其提取到其他存储库。

现在我曾经git subtree add将目录粘贴回第二个存储库。

如果我看gitkgit log --decorate --graph一切看起来都很好。所有提交都按预期存在。此外,所有文件都按预期存在。

但是,当我尝试使用的是看一个移植文件的历史记录git log -- transplanted_dir/somefile,我只看到了一个“合并”承诺,从产生的git subtree add

为什么我在上面的 gitk 中看到提交,但在单个文件的日志中没有?

如果我做一个简单的git merge,我可以看到每个文件的历史记录,但是这些文件当然不会存在于子文件夹中。

将移动的提交集成到另一个存储库中的正确方法是什么?

重现情况的详细示例命令:

#create two repositories:
git init a
git init b

# create directory dir with some history
cd a
mkdir dir
echo 1 > dir/file
git add .
git commit -am 1
echo 2 > dir/file
git commit -am 2
echo 3 …
Run Code Online (Sandbox Code Playgroud)

git git-subtree

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

Git subtree push 导致一个很长的对象计数。如何避免这种情况?

我在我的项目中添加了一个子树,如下所示:

git subtree add --prefix sites/all/modules \
git@github-ucbdrupal.com:ucbdrupal/migrate_hrweb.git master --squash
Run Code Online (Sandbox Code Playgroud)

我设置了这些遥控器:

$ git remote -v
migrate-hrweb-github    git@github-ucbdrupal.com:ucbdrupal/migrate_hrweb.git (fetch)
migrate-hrweb-github    git@github-ucbdrupal.com:ucbdrupal/migrate_hrweb.git (push)
origin  ssh://codeserver.dev.76fc8622-a639-4e1e-873e-    963cf71fd555@codeserver.dev.76fc8622-a639-4e1e-873e-963cf71fd555.drush.in:2222/~/repository.git (fetch)
origin ssh://codeserver.dev.76fc8622-a639-4e1e-873e-963cf71fd555@codeserver.dev.76fc8622-    a639-4e1e-873e-963cf71fd555.drush.in:2222/~/repository.git (push)
Run Code Online (Sandbox Code Playgroud)

Git 状态显示没有变化。

在主分支上,我编辑子树目录中的 README.md。

我承诺:

[bwood@ucbmbp hrweb-ob-js]$ git commit -am  "Test edit #4 of hrweb_migrate"
[master 6f4b9c1] Test edit #4 of hrweb_migrate
1 file changed, 1 insertion(+)
Run Code Online (Sandbox Code Playgroud)

我尝试将其推送到 migrate-hrweb-github 远程:

$ git subtree push -P sites/all/modules/migrate_hrweb migrate-hrweb-github master      
using:  migrate-hrweb-github master
Run Code Online (Sandbox Code Playgroud)

现在我必须等待这么长的对象计数完成(5 分钟)。主项目是一个大型 Drupal 安装。我认为每个对象都被计数/过滤:

1022/  16200 (1022)  [this updates for …
Run Code Online (Sandbox Code Playgroud)

git git-subtree

5
推荐指数
0
解决办法
248
查看次数

git子树拆分 - 标签不会被转移

我有一个git项目有一个很大的根目录:

C:\MyProject\MyProject
C:\MyProject\.git
Run Code Online (Sandbox Code Playgroud)

然后所有文件和子目录都在里面C:\MyProject\MyProject.我想删除那个多余的根目录,所以我使用了这个命令:

git subtree split -P MyProject -b MyBranch
git checkout MyBranch
git branch -D master
git branch -m MyBranch master
Run Code Online (Sandbox Code Playgroud)

但是,此解决方案存在问题 - 标记仍附加到现已删除的原始主分支:

在此输入图像描述

灰色分支是原始主分支,红色分支是没有冗余目录的新分支,但标记仍然附加到旧分支的签入.

git git-tag git-subtree

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

git subtree pull -P what &lt;repo&gt; &lt;ref&gt; 总是合并冲突

问题:即使我没有任何更改,每次尝试拉入我的子树时,我都会遇到合并冲突。

我在做什么

子树仓库中

# Make some changes

$ git commit -am 'Changes made'

$ git push origin master
Run Code Online (Sandbox Code Playgroud)

主回购

$ git subtree add --prefix public/common {{subtree-repo}} master --squash

# Make some changes

$ git commit -am 'Changes made'

$ git subtree push --prefix public/common {{subtree-repo}} master
Run Code Online (Sandbox Code Playgroud)

子树仓库中

$ git pull origin master

# Make some changes

$ git commit -am 'Changes made'

$ git push origin master
Run Code Online (Sandbox Code Playgroud)

主回购

$ git subtree pull --prefix public/common …
Run Code Online (Sandbox Code Playgroud)

git merge git-subtree

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

将子树拆分为另一个分支:是否安全?

假设我有Foo两个分支的存储库:AB.科A是分支的始祖B.

假设我A按照本指南中的说明在分支中设置子树.一旦我完成所有设置,当我稍后将分支合并A到分支时会发生什么B?显然我希望分支B自然地继承子树,就像我再次手动设置它一样B.实际会发生什么?

git git-subtree

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

Git子树没有前缀

如何将--prefix设置为空,以便子树文件夹是工作目录?

git subtree add --prefix sub-module master --squash
Run Code Online (Sandbox Code Playgroud)

git git-subtree

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

使用git子树检出特定标记

我可以在子树中使用标签吗?根据具体问题:

我有一个git存储库,其中包含一个外部存储库作为子树.我可以添加此外部存储库并从此存储库中签出特定分支.随着git subtree pull --prefix=<dir> --squash <remote> <branch>所选分支的更新运行良好.

现在可以签出特定的标签吗?我无法在子树中找到有关标签的一些信息......

git git-tag git-subtree

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

使用git子树处理符号链接

我正在尝试将git存储库的一部分推送到Heroku。

这是存储库结构

网站
---共享
--- site1
--- site2
------共享(这是父目录中共享的符号链接)。

如果我尝试site2在Heroku上简单地推送内容,则由于未shared包含文件,该捆绑包将失败。

我正在寻找一种在Heroku sharedsite2使用git子树发送的方式。

有什么建议么?

git heroku git-subtree

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

标签 统计

git ×10

git-subtree ×10

git-tag ×2

buildout ×1

git-push ×1

git-submodules ×1

heroku ×1

merge ×1

python ×1