问题标签 [git-subtree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git-subtree - git subtree:从项目中以不同的前缀添加不同的分支
我有一个模块存储库,其中包含一些分支branchA、branchB等。我想使用 git subtree将这些分支导入项目存储库。我像这样设置我的项目存储库:
这似乎按预期工作,并且我从folderA和folderB的正确分支中获得了文件和历史记录。
现在我在module的master分支中进行了更改,我将其应用于branchA和branchB(通过重新设置 branchA和branchB)并且想要更新project。
将这些更改提取到项目中。但是,当我这样做时
只有文件夹 A得到更新。对于folderB,我收到以下消息:
并且更改不会合并。显然,git 没有正确考虑到更改已应用于路径folderA,而不是folderB。有谁知道我可以做些什么来使这种情况起作用?
git - 从中央仓库拉出时的 git-subtree 冲突
我有几个项目依赖于同一个库,我想为此维护一个单独的 git 存储库,以便在每个项目中使用 git-subtree 进行管理。例如,在每个项目中我可以做:
现在在处理 project1 的过程中,我对 lib1 进行了一些更改,比如 lib1/file1.c,并将其推送回中央仓库:
到目前为止,一切都很好。但现在我想更新 project2 的 lib1 副本。所以我尝试:
这是怎么回事?我确定没有对project2下的任何lib1文件进行任何更改,那么为什么这里会有冲突呢?
冲突是半空的,就像在这个问题中报告的那样。一切都在单个系统(OS X)中被拉/推,所以我知道那里建议的行尾没有问题。
当然,这是 git-subtree 的常见用例,并且有一个我看不到的简单答案。请帮忙!
编辑:我发现了一个不满意的解决方法:在将更改推送到子树之后,我需要重新运行子树拉取:
即使没有更改,它也会找到一些东西,并进行合并提交。然后,在其他地方进行了一些更改之后,当我第二次从中央仓库拉出时,冲突就不会发生了。但是如果我在 push 后忘记立即运行 pull,下一次 pull 就会出现这个冲突。
所以现在我的问题是,为什么这行得通?git-subtree 跟踪推送的方式是否存在错误,或者我错过了什么?
git - Git:忽略子树中的文件,但在本地跟踪它并将其推送到远程生产
我有一个非常具体的工作流程,原因是我习惯git subtree
将一个项目包含在另一个项目中:
本地 git 存储库
styling
,由pull
远程存储库 (styling-exchange
) 更新;另一个本地存储库
styling-bare
,用于同步styling
和code
另一个本地 git 存储库
code
,它通过名为( )的远程分支将code/styling
子目录添加为子树styling
../styling-bare
production
可以更新code
的远程存储库git push production master
它应该如下所示:
工作流有两个用例:
cd
intostyling
, pull fromstyling-exchange
, 然后cd
intocode
, 更新子树, 对andstyling
做一些改变file1
and , push tofile2
file3
production
cd
into ,对andcode
进行一些更改,将更改推送到(子树推送),into , pull from ,将更改推送到file1
file2
file3
styling-bare
cd
styling
styling-bare
styling-exchange
我想file2
在本地存储库styling/styling-bare
与code/production
存储库中有两个完全不同且独立的版本。我需要从styling
子树中获取所有更新code/styling
,但我需要在file2
内部进行跟踪code
,而不需要从styling
.
即,我想更新存储库styling
中的子树code
,但保留我自己的版本file2
(同时在and和 file3 之间file1
同步和在and之间同步),以便我可以将我自己的版本(v1)推送到以后。styling
code
code
production
file2
production
在 git 中是否有任何优雅的方法可以做到这一点,而无需符号链接或一些复杂的钩子?
请注意,我已经尝试过:
git-subtree - 为什么 git subtree pull 会覆盖顶层目录?
我使用以下方法添加了子树:
git subtree add -P WLContainerControllers https://github.com/an0/WLContainerControllers.git master
结果提交是:
然后在一些上游更新之后,我使用以下方法进行了子树拉取:
git subtree pull -P WLContainerControllers https://github.com/an0/WLContainerControllers.git master --squash
输出:
它弄乱了谁的目录。
相关日志如下:
我正在使用通过 OS X 10.8.4 上的自制软件安装的 git 1.8.3.1。
我对 git subtree 的使用有什么问题?如何正确使用它?谢谢。
git - 是否可以在保持父 repo 结构的同时创建 git 子树的分支?
我们希望将子项目放在 Git 存储库中。repo,即 ParentRepo,将需要与我们的私有服务器同步,然后一些子目录也需要推送到公司 github repo 并从上游 github repos 中提取。我们还需要能够从将被推送到 github 的那些子目录(而不是整个父 repo)创建分支。
所以我们的层次结构是这样的:
- ParentRepo/Dir1/GitHubProj1
- ParentRepo/Dir1/GitHubProj2
- ParentRepo/Dir1/PrivateProj
GitHubProj1 和 GitHubProj2 是来自社区 github 存储库的分支。我们需要能够从社区 github 存储库中获取上游更改,并从我们的 github 存储库中获取分支。PrivateProj 不会从任何 github 存储库中推送或拉取。一切都被推送到我们私人服务器上的 ParentRepo。
我们考虑过使用子模块,但似乎有很多关于它们的抱怨,所以我们决定尝试使用子树。我们使用公司 github 帐户 URL 创建了子树,并为外部 github 帐户添加了远程跟踪分支。
但是,当我们尝试使用带有 --branch 选项的 git subtree split 命令创建子树的分支时,子树的内容被放在父 repo 的根目录中。
当我们创建每个子树的分支时,我们希望在父 repo 中维护其原始目录结构。除了使用特殊的命名法之外,有没有办法以这种方式制作分支或以不同的方式设置我们的 repo 以便这是可能的?
git - 创建不包含 gitignore 文件的 git-subtree 分支
我最近开始使用 git-subtree 将一些 github 子项目保存在同步到私有服务器的父存储库中。我在子项目分支中管理 .gitignore 文件时遇到问题。
我需要能够创建子项目的分支,然后将其推送到 github,并且还能够从 github 拉下子项目的分支。我已经通过使用“git subtree split -b”命令和直接从 github 存储库创建分支,然后将它们拉到我的父存储库中进行了尝试。
但是,我一直在处理 .gitignore 中列出的文件时遇到问题,因为我不希望它们位于这些分支中。我看到了这个 Stack Overflow 帖子(Git subtree not proper using .gitignore when doing a partial clone),它描述了类似的情况,但我不能像建议的那样只使用 git clean 因为我不想完全删除文件,只是为了确保它们没有被提交或推送到 github。我也不想将 gitignore 文件放在每个子树中,因为我不希望公共 github 存储库包含我的私有文件的名称。
有没有办法制作不包含被忽略文件的分支?
angularjs - 如何将我的 AngularJS 静态站点上传到 Github Pages?
我用 AngularJS 创建了一个静态站点,现在想将它作为 Github 页面上传。我已按照此处的所有说明进行操作
https://help.github.com/articles/creating-project-pages-manually
我可以创建一个名为的新分支gh-pages
,git push origin gh-pages
我的所有内容都很好。当我去我的仓库时,我看到了新的gh-pages
分支,里面有所有的文件,就像这样
https://github.com/siddhion/maxmythic_angular/tree/gh-pages
问题是当我尝试在http://siddhion.github.io/maxmythic_angular/查看我的网站时,我只得到一个 404 页面。index.html
我认为问题在于我的顶级目录中没有我的。它实际上位于app
目录中。我的目录结构看起来像它的样子,因为我是通过 Yeoman 创建的。我假设我需要顶层的所有文件。或者也许我在这个假设上错了?
如何让我的 AngularJS 静态站点正确显示?
更新
我按照斯蒂芬提供的步骤进行操作。我到了第 3 步,但出现错误:
然后我尝试了
然后git subtree push --prefix dist origin gh-pages
再试一次,但得到了同样的错误。
在 Yeoman 部署页面上,我在一些常见错误部分下看到
您可能会收到这样的错误更新被拒绝,因为您当前分支的尖端落后。你可以通过强制推送到遥控器来解决这个问题(不过要小心,它会破坏已经存在的东西)。
我很担心强迫它,subtree push
因为我一般是 git 新手,不知道什么会被破坏。我的意思是,我目前gh-pages
在我的 maxmythic_angularorigin
遥控器上没有分支,所以我并不担心,但我在那里有我的master
,gh-pages-old
和gh-pages-v1
分支。如果我跑,它们会被摧毁git subtree push --prefix dist origin gh-pages
吗?
git - 为什么即使我在 Ubuntu 12.10 上安装了 git 1.8.3.2,`git subtree` 也不起作用?
我即将使用 Yeoman 将基于 AngularJS 的静态站点部署为 Github 页面。部署说明的第 3 步告诉我要做
git subtree push --prefix dist origin gh-pages
但是当我进入时,我得到
git: 'subtree' is not a git command. See 'git --help'.
这个SO 答案为我提供了有关如何升级到最新 git-core 并确保它始终升级到最新稳定版本的说明。
运行这些命令后,我git --version
确保我拥有最新版本,显然我这样做了,因为git version 1.8.3.2
是输出。现在当我尝试跑步时
git subtree push --prefix dist origin gh-pages
再次我仍然得到相同的以下错误
git: 'subtree' is not a git command. See 'git --help'.
最后,我刚刚重新启动了 Ubuntu 12.10 并尝试再次运行该命令,但再次出现同样的错误。
git subtree
即使我已经升级到当前的稳定版本,为什么命令仍然不起作用?
angularjs - 我尝试将我的 Yeoman AngularJS 静态站点部署到 Github 页面,但 git subtree 命令总是被拒绝
我正在尝试将我的 AngularJS 静态站点(我从 Yeoman 开始)部署为 Github 页面,并按照Yeoman 部署指南中提供的步骤进行操作。我在第 1 步和第 2 步中取得了成功,但是当我到达第 3 步时,事情就变糟了。第 3 步告诉我运行
当我运行这就是我所看到的
然后我按照提示尝试
然后git subtree push --prefix dist origin gh-pages
再次尝试但得到与以前相同的错误。
在 Yeoman 部署页面上,我在一些常见错误部分下看到
您可能会收到这样的错误更新被拒绝,因为您当前分支的尖端落后。你可以通过强制推送到遥控器来解决这个问题(不过要小心,它会破坏已经存在的东西)。
我很担心强迫它,subtree push
因为我一般是 git 新手,不知道什么会被破坏。我的意思是,我目前gh-pages
在我的 maxmythic_angularorigin
遥控器上没有分支,所以我并不担心,但我在那里有我的master
,gh-pages-old
和gh-pages-v1
分支。如果我跑,它们会被摧毁git subtree push --prefix dist origin gh-pages
吗?
更新
为了安全起见,我继续将我的工作复制到另一个文件夹中,然后添加--force
到我的git subtree push
命令中并运行它。这就是我得到的
我怎样才能让 git subtree push --prefix dist origin gh-pages
命令工作,以便我可以将我的网站部署到 gh-pages?
更新
我想看看这个问题是否与说明有关,或者只是与我的仓库有关,所以我设置了一个新的 Angular 应用程序yo angular
并按照部署说明进行操作。git subtree push
这次工作了。我仍然不知道我的 gh-pages 存储库发生了什么。我将不得不真正学习git
内外。
git - 如何创建现有存储库的 gitsubtree?
我正在尝试创建现有存储库的 gitsubtree,例如:
-> 项目A/项目B
项目 A 是父项目,我想将项目 B 添加为 git 子树。
git subtree -P projectB ssh://git@github.com/projectB.git master
但它失败了,并显示以下消息:
前缀“projectB”已经存在。
我不想再次下载所有存储库,我只想将此目录添加到我的 gitsubtree 中。
这个目录项目 B 没有被项目 A git 跟踪。
提前致谢