我有一个git项目,其文件结构如下:
Project_A/files...
Run Code Online (Sandbox Code Playgroud)
我有另一个git项目,其文件结构如下:
Project_B/
Project_A/files...
files...
Run Code Online (Sandbox Code Playgroud)
现在我想将项目A合并到项目B中,并继续使用项目B作为唯一的存储库.
我尝试使用子树合并,但是我收到一条错误,说"条目'XXX'重叠'XXX'"
有没有办法将项目A合并到项目B并保留所有提交历史记录?
提前致谢!
我对这个Git事情很陌生,需要一些帮助.
我最近在GitHub上创建了一个新的repo并将其克隆到我的桌面上.我们称之为myProject.我的GitHub帐户中也有一个fork,我将其作为子模块包含在myProject中.让我们把这种myForkOfOtherProject,这是一个叉otherProject.
那么,这是目前的情况:

当一个repo被克隆时,它有一个默认的远程名为origin,指向你在GitHub上的fork,而不是它分叉的原始repo.要跟踪原始仓库,您需要添加另一个名为upstream的远程.
所以,我的问题是,如何将上游设置为子模块?或者我不明白什么?
先感谢您.
我正在开发一个有许多子模块的项目.昨天,一切都是桃子,应用程序正在运行等等.git submodules update今天早上我跑了之后,我收到了应用程序中的错误.
$ git submodule update
Submodule path 'vendor/plugins/pluginA': checked out '49d5cba84dcffc061db69813162d103feef31ecb'
Submodule path 'vendor/plugins/pluginB': checked out '4f442f0448c1826252933d5af8fb33cd64d76f6e'
Run Code Online (Sandbox Code Playgroud)
那么在等待问题得到修复的同时,如何查看以前版本的子模块呢?我已经看过几个对解决方案的引用而没有真正看到一个具体提到这个案例的例子.
谢谢!
编辑:奖金,如果你也可以帮助我理解/解决这个问题(如何获得pluginA和pluginB再次参考head/master):
$ git submodule status
49d5cba84dcffc061db69813162d103feef31ecb vendor/plugins/pluginA (49d5cba)
4f442f0448c1826252933d5af8fb33cd64d76f6e vendor/plugins/pluginB (4f442f0)
558fd1a762d63562689e58cac50283192fde74d5 vendor/plugins/pluginC (heads/master)
4feb2c51148ebc4d4f80f9a64b9eabbfde5b13a3 vendor/plugins/pluginD (heads/master)
19dce61e256b0fc3f05342cdd3e4d21a434c0b87 vendor/plugins/pluginE (heads/master)
Run Code Online (Sandbox Code Playgroud) 我对使用git的子模块功能感到非常沮丧.要么我仍然没有做对,要么就是因为我没想到这一点.以下项目情况给出:
Project
| .git
| projsrc
| source (submodule)
| proj.sln
Run Code Online (Sandbox Code Playgroud)
在此方案中,源指向包含所有项目中的公共源数据的另一个存储库.在源代码下发生了很多开发,也在projsrc下.遗憾的是,Project指向源子模块的一些提交,而不是它的实际HEAD.这是通常的git行为,据我所知.
我已经发现了
git submodule update
Run Code Online (Sandbox Code Playgroud)
只需获取与主项目一起提交的子模块版本.但是,我真的希望始终与子模块开发保持同步,但是没有任何真正的线索如何做到这一点.因此我的问题是:
是否可以将项目附加到子模块的HEAD,不管这是否会破坏项目的编译.我只是不想总是进入子模块目录并执行git pull.因为我认为我可以放弃在子模块目录中完成的更改,因为这很简单地附加到提交而不是真正的任何分支左右.
请考虑以下限制:
我正在计划我的linux/apache/php web项目的目录结构,如下所示:
只会www.example.com/webroot/暴露在阿帕奇
www.example.com/
webroot/
index.php
comp1/
comp2/
component/
comp1/
comp1.class.php
comp1.js
comp2/
comp2.class.php
comp2.css
lib/
lib1/
lib1.class.php
Run Code Online (Sandbox Code Playgroud)
在component/和lib/目录将只在PHP路径.
为了使webroot目录中的css和js文件可见,我计划使用符号链接.
webroot/
index.php
comp1/
comp1.js (symlinked)
comp2/
comp2.css (symlinked)
Run Code Online (Sandbox Code Playgroud)
我尝试遵循以下原则:
git如何正确处理单个文件的符号链接,有什么需要考虑的吗?
说到图像,我需要链接目录,如何用git处理?
component/
comp3/
comp3.class.php
img/
img1.jpg
img2.jpg
img3.jpg
Run Code Online (Sandbox Code Playgroud)
它们应该链接在这里:
webroot/
comp3/
img/ (symlinked ?)
Run Code Online (Sandbox Code Playgroud)
如果使用符号链接有缺点,我可以直接将图像移动到webroot/tree,这将打破第三个原则(git实用性).
所以这是一个git和符号链接问题.但我有兴趣听听有关php布局的评论,也许你想使用评论功能.
我目前正在尝试将我们的版本控制切换到Git(来自CVSNT).令人惊讶的是,这不是我遇到问题的分期性或临时区域的概念.但是,我很难解决AFAICT操作(如分支,合并和标记)始终应用于存储库级别而不是文件或目录级别的问题.
我们在不同的项目中重用了很多代码.我的工作区目前看起来像这样:
/Dev
/Libs
/LibA
/LibB
/LibC
/Project1
/Project2
/Project3
/WebDev
Run Code Online (Sandbox Code Playgroud)
现在,假设Project1依赖于LibA和LibB,Project2依赖于LibB和LibC,而Project3没有lib依赖.其中一些lib后来被编译成DLL(或BPL-我们的主要开发环境是Delphi),其他只是可重用代码的集合,它们逐个文件地包含在主项目中.
WebDev包含我们(主要是静态的)公司网站的代码,该网站还包含有关Project1,2,3的信息,因此可能必须与它们一起标记.
由于我在项目之间切换很多,我通常会同时检查所有这些,在必要时将lib目录即时更新到相应的项目分支.
我将如何在Git中对此进行建模,是否有理由坚持这种工作方式?我已经阅读了关于git子模块但是到目前为止我没有看到我将如何应用这里有几个原因:
据我所知,子模块总是会在各自的"超级项目"中检出.但是,我们发现使用Delphi管理(设计时)库代码的多个副本是皇家PITA,这是我们将所有库保存在单个项目树之外的公共目录下的原因之一.其他副本只能通过构建自动化进行检查,从不进行任何实际工作.
我真的不希望libs与项目"独立":如果我标记或分支其中一个项目,我总是想标记或分支各自的库.当我想回到主项目的特定标记版本时,我希望libs也可以恢复到该状态.如果可能,标记/分支/签出应始终在项目及其依赖项的单个步骤中发生.
我已经尝试将所有内容放在一个Git存储库中,其中库代码主要在主分支上进行管理,并且每个"项目"都在自己的分支上,但每当我尝试合并主服务器和项目分支之间的lib更改时,它就会拉动来自不相关的libs的所有文件,这根本不是我想要的......
你们有什么想法如何最好地解决这一切?我对所有的建议都持开放态度,包括我工作树的新布局.
如果有人能指出我关于子模块的实际动手教程(或者我需要完成的任何其他技术),那也很棒.
git version-control git-submodules version-control-migration
最近我们的Git存储库遇到了很多问题.我们是git子模块的用户,我们的应用程序之间共有4个共享存储库.
例如,存储库"网站"总共有3个子模块.
[submodule "vendor/api"]
path = vendor/api
url = git@your.cool.domain.com:api
[submodule "vendor/auth"]
path = vendor/auth
url = git@your.cool.domain.com:auth
[submodule "vendor/tools"]
path = vendor/tools
url = git@your.cool.domain.com:tools
Run Code Online (Sandbox Code Playgroud)
我们已经正确检查了我们的主存储库'网站'.现在,我的一位同事做了推动,然后我git pull; git status:
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: vendor/api (new commits)
# modified: vendor/auth (new commits)
# modified: vendor/tools (new commits) …Run Code Online (Sandbox Code Playgroud) 我想在github上为私人仓库提供对wiki的读写访问权限,在同一个仓库中,我不希望这些团队成员能够看到实际的仓库(包含代码而不是维基本身的仓库) ), 有没有办法做到这一点?
为了更清楚,我想发布我的API文档,这是团队的内部,使用API但保持实际的api代码隐藏它们(这听起来很邪恶,但它并不坏,你需要知道整个故事,请不要评判我).
在开发iOS应用程序时,我经常使用GitHub中的第三方代码和我自己创建的可重用类.我一直在做的是将源代码克隆到某个特定的文件夹中~/Documents,在那里我保存了所有的库代码.然后我将源文件拖入Xcode项目并编写代码,使用本地Git存储库跟踪我自己的源代码中的更改.到目前为止一直很好,但我最近发现了一个严重的问题:我想切换回我的Xcode项目的旧版本,发现它不再编译,因为它使用了旧版本的第三方代码,而且没有任何地方我存储了它使用的版本!
这个问题通常如何解决?我简要介绍了Git子模块,但我不确定它是否正确.我还简要介绍了CocoaPods,但我是否也可以将它用于我自己创建的库?
也许我在这里遗漏了一些东西,但我已经看过并且想做一些看起来很简单的事情,但我还没有弄清楚(或找到某人)如何完成它。
我试图简单地git clone https://github.com/dave/repository_of_dave.git(和变体),但仍然与 Dave 的 repo 中的所有内容有关。复制/粘贴是进入这里的唯一方法吗?
git ×9
github ×3
cocoa ×1
git-clone ×1
git-fork ×1
linux ×1
objective-c ×1
permissions ×1
repository ×1
symlink ×1
wiki ×1
windows ×1