我试过git子模块.虽然它可以解决我在项目中共享存储库的问题,但是使用子模块有两个问题困扰我:
这两个问题很容易在日常开发工作中引入错误.我发现git奴隶可以解决我的问题.
使用git slave有任何副作用吗?
或者是否有良好的做法可以避免git子模块中的上述问题?
这更多的是一个什么是正确策略的问题,而不是“如何做”的问题,因为我已经有了 GIT 手册。
我有一个 Xcode 工作区。它包含3个子项目。
我一直在考虑创建 GIT 存储库,但正在寻求一些关于设置这些存储库的最佳策略的建议。
对于每个子项目,我很可能有多个分支,并且需要对“app”子项目的每个分支使用哪个版本的共享代码进行一些控制。
目前,我合并共享代码的方式是将对该文件的引用复制到“app”项目中。我不确定这是否是最好的前进方式,因为我不确定如果我需要共享代码的多个分支会发生什么。
如果有人有类似的设置并可以提供建议,我将不胜感激。
我的公司正在将我们的版本控制工具从Rational ClearCase更改为Git.我们有以下开发方案,我们很好奇Git是否有适当的模式来实现我们在ClearCase中的相同行为.
以下是关于我们情况的一些基本观点:
- 我们有许多独立的应用程序.我们称之为AppA,AppB和AppC.
- 我们还有一些所有项目共有的文件(构建脚本等).我们称之为工具.
- 对于AppA,AppB或AppC代码的任何给定剪切,我们需要特定的工具代码剪切.
- 我们的大多数开发人员从不修改工具代码.
对于ClearCase,我们这样建模:
组件:app_a,app_b,app_c,工具
项目:AppA,AppB,AppC,工具
Project AppA包括app_a作为读/写组件,工具作为只读组件.
Project AppB包括app_b作为读/写组件和工具作为只读组件.
Project AppC包括app_c作为读/写组件和工具作为只读组件.
项目工具包括作为读/写组件的工具.
App*项目的每个基线都引用app_*和工具组件的基线.当开发人员重新定义到建议的基线时,他们会从两个组件中获取更改.
对于Git,我们认为子模块可能是最接近正确答案的东西.但是,在提取/重新定位存储库时,听起来需要额外的步骤来更新子模块代码.理想情况下,我们希望透明.此外,我们不一定关心从父存储库的角度知道子模块中发生了什么变化; 我们只关心整个子模块的某个时间点.
我想在开发代码的同时管理我的项目的 GitHub wiki。例如:
分支机构
理想情况下,我希望 wiki 包含在项目的子文件夹(例如 /wiki)中。然后,当我更改代码时,我还可以同时更新 wiki(代码 + 文档更改)。这也意味着我的所有开发代码和文档都将独立于“develop”分支中,直到我与“master”分支合并。希望即使是通过手动流程,GitHub wiki 也会在与 master 合并后进行更新以反映更改。
我查看了 Git 的子模块功能,但据我了解,这通常指向单个修订版。我想以某种方式跟踪我的代码开发,以便分支和合并可以正常工作。
给定项目目录中的 git 存储库树,例如
Projects/
+A/
|+.git/
+B/
|+.git
Run Code Online (Sandbox Code Playgroud)
我想设置一个 git 存储库Projects.git,它不跟踪项目的内容,而只跟踪它们的存在和状态。克隆这个存储库的人应该只有一个未克隆的存储库等的骨架A,B并单独激活它们是否保持同步。典型的工作流程如下所示:
git clone server:Projects.gitA,它也会克隆它git-push/pull,独立于它是否在Projects/或Projects/A应该更新两者A.git 和 Projects.git关于 的信息A。任何相关的都B应该被忽略,因为它是不活动的并且本地是空的B,也克隆它git-push/pullinProjects也应该在Aand 中这样做B,而推/拉A不应该影响BA,它(验证后A.git不需要a git-push)清空本地目录A,不影响Project.git怎样才能最好地治疗?我目前的方法是一些钩子魔术,但我对git 子模块不够熟悉,看不到这是否可以通过子模块来实现,或者我是否需要使用其他一些解决方案。
我正在尝试使用git设置我的(Zend Framework)开发环境(或者更重要的是我的目录结构).但是,我的基本问题实际上与所涉及的特定库无关,但更重要的是如何让git完成我想要的东西.
我打算让我的项目根目录/home/jsuggs/project.
我还将与Zend Framework(ZF),Doctrine和其他库一起工作,但我只关注ZF,因为一个解决方案可能与其他库的解决方案相同.
我将克隆ZF2存储库/home/jsuggs/zf2.
我想/home/jsuggs/project/application/library/Zend参考一下/home/jsuggs/zf2/library/Zend.
我希望能够在两个存储库(项目和zf2)上本地工作,其中zf2中的切换分支直接影响项目.
我的问题是我如何设置Git,以便深层嵌套的库可以在开发期间引用我的本地版本,但也可以在部署到生产中时设置为(其他/任意)位置?
我还想避免路径是绝对的,所以如果其他人在项目上工作,那么库路径将不会引用我的主目录.
我正在研究使用符号链接和git子模块,但想知道这种类型的设置是否有"最佳实践".而且,我完全有可能做错了所以请随意说"只做X".
对于我正在进行的项目,我们决定开发一个工具来帮助开发,因此这不应该在生产中.
所以我想知道,因为git非常棒,如果有一个功能可以阻止某些文件(是的,只有文件:这是一个Magento项目,我们要开发的工具将在他自己的模块中,没有交集应用程序的其余部分)将合并为master,但应该在其他分支中可用.
我们正在考虑使用git-flow,如果这有帮助的话.所以我们将拥有主人,我们将从中创建开发,从中创建我们所有的功能分支.我们的想法是让这个模块开发,但永远不会合并回主人.
我现在在想,只是在主分支中忽略那些文件(.gitignore),这会有用吗?
编辑1:项目结构
我觉得我必须提供有关项目结构的更多信息,它来了:
+ main_folder/
+ magento/
|---+ app/
| |--+ code/
| | |--+ community/
| | |--+ core/
| | |--+ local/
| | |--+ Namespace1/
| | |--+ Module1/
| | |--+ Module2/
| | |--+ Namespace2/
| | |--+ Module1/
| | |--+ Module2/
| |--+ design/
| | |--+ frontend/
| | |--+ default/
| | |--+ default/
| | |--+ layout/
| | |--+ template/
| + …Run Code Online (Sandbox Code Playgroud) 作为Go的初学者,我不知道initGit 在哪里.
这里的文档https://golang.org/doc/code.html似乎在早期的hello目录之外建议,然后告诉我git init在hello目录中运行.
对此提出任何建议都是有用的.
我在项目中添加了 2 个子模块,subA 和 subB,位于 externals/subA 和 externals/subB 中。
今天,另一位团队成员提交了他的代码,当它被拉取时,在git statusexternals/subA 和 externals/subB 中使用时,subA 和 subB 都显示分离头状态。
我先做了git submodule update,没有报告任何错误。我一次又一次地尝试,git submodule init但git submodule update它没有改变。
我们如何才能使子模块恢复同步?子模块出现这种情况的原因是什么?自我们开始以来,这是第一次出现问题。谢谢。
我有这样的目录结构:
|-- ROOT
|-- Project1
| |-- application
| |-- img
| |-- js
| |-- css
| `-- system
|
|-- Project2
| |-- application
| |-- img
| |-- js
| |-- css
| `-- system
|-- Project3
....
Run Code Online (Sandbox Code Playgroud)
根文件夹包含总共x个项目:"Project1","Project2","Project3"等.
现在我想在"system","css"和"js"上使用git.每个项目的这些文件夹应该相同.那么如何用git同步所有项目呢?
我猜想要创建一个"主项目"并在那里推出新的修改并将新版本提升到所有其他项目.但这是一个**的痛苦..
我想要的是运行一些命令/批处理文件来同步所有.例如,如果我有6个项目并且我在项目1中修改了某些内容,我怎么能快速地对所有项目进行修改(而不是将Project1推送到"Master"并拉动它5次)?
可能吗?
只是为了记录我正在使用Windows机器.
上一个问题:多个项目之间的Git
如何在子模块中更改分支?当我git branch从子模块中运行时,我看到以下输出:
> git branch
* (HEAD detached from 229a7b2)
master
Run Code Online (Sandbox Code Playgroud)
我将如何进入新的分支?喜欢development吗?
如何管理DVCS中的公共库源?
目前,我的团队使用Perforce来管理我们的软件项目.使用Perforce的"工作区映射"功能,我能够轻松地将公共库源映射到开发应用程序目录,以保持源管理和开发项目工作之间的转换透明.例如,Repository看起来像这样:
由于漂亮的P4映射功能,我们的开发人员可以使用工作空间映射以最有意义的形式为他们所处理的项目提取一整套源代码.典型的dev项目文件夹可能如下所示:
/projects
/FALL-2009
/ForumSite
/deps
/event.logger
/json.parser
/AdminTool
/deps
/event.logger
/json.parser
/Users-db
/SiteConfiguration-db
/FALL-2009-PATCH-01
/json.parser
/SiteConfiguration-db
/FALL-2009-PATCH-02
/AdminTool
/deps
/event.logger
/json.parser
/SiteConfiguration-db
Run Code Online (Sandbox Code Playgroud)
当dev编辑任何他/她的组件或应用程序中的源时,更改将映射回正确版本点的右源控件目录.这对开发人员来说是透明的,降低了管理的复杂性和设置新项目的时间.
我正在研究Git,Bazaar和Mercurial作为Perforce的潜在替代品.任何人都可以深入了解DVCS世界中常见组件源的处理方式吗?