Questions tagged «git»

Git是开源DVCS(分布式版本控制系统)

4
为什么Git社区似乎忽略了并排差异[关闭]
我曾经使用Windows,SVN,Tortoise SVN和Beyond Compare。这是进行代码审查的绝佳组合。 现在,我使用OSX和Git。我已经设法将bash脚本与Gitx和DiffMerge融合在一起,提出了几乎无法接受的解决方案。 一年多来,我一直在与这种设置以及类似的设置混为一谈。我也尝试过使用Github差异查看器和Gitx差异查看器,所以好像我没有给他们机会。 有这么多聪明的人用Git做伟大的事情。为什么不选择查看整个文件的并排差异?与曾经使用过这两种方式的人一起,我从来没有听说过有人更喜欢单+/-视图,至少在快速检查之外。
33 git 

4
使用GIT管理多个项目人员
我是GIT / GitHub的新手(从昨天开始新手)。我想知道用Github管理同一项目中的多个人的最佳方法是什么。目前,我正在与四个开发人员一起管理一个项目。 我该如何进行工作流程并确保一切都同步? (注意:所有开发人员都将拥有一个通用帐户。) 每个开发人员都需要位于不同的分支吗? 我将能够处理2个使用同一文件的人吗? 请发表详细的答案,我不是一个害羞的读者。我需要很好地理解这一点。
32 git  github 

5
我是一个gituri用户,对mercurial的分支感到困惑。我应该如何跟踪小变化?
我以前一直使用git,但是我想为python做贡献,所以现在我必须学习mercurial,我发现它非常令人沮丧。 因此,我做了几个小补丁,并希望将它们作为提交记录在本地Mercurial存储库中。显然,有四种方法可以处理水银的分支。1和4对我来说完全是荒谬的,命名分支似乎是重量级的,我觉得我不应该将它们用于快速1提交修复,所以我使用了书签。 现在,我的补丁程序被拒绝了,我想从存储库中删除我的一个书签分支。好的,在git中,我只是强行删除我的分支而忘了它,所以我删除了书签,现在出现以下问题: TortoiseHG hg log仍然显示commit和defaultbranch有2个头。如果我理解正确,那么没有其他插件您将无法删除hg中的提交。 Mercurial不仅具有散列,而且具有修订号。当我添加了一些自己的提交时,所有之后提交的提交都具有与主要中央存储库不同的修订号。 我hg update在拉动master书签后自动将其移动到最新提交,但是在TortoiseHG中找不到该方法。 我究竟做错了什么?这是正常现象吗?应该,我应该忽略这些问题吗?或者我应该如何与分支机构合作?

2
使用Git时,建议使用master分支进行主动开发吗?
首先,在某些背景下,我们正在将所有项目团队转移到使用git的过程中,并且正在制定有关如何组织存储库的准则,以便还可以监视某些分支机构的持续集成和管理。自动部署到测试服务器。当前,正在开发两种模型: nvie.com文章对成功分支产生了重大影响,其中master分支代表最稳定的代码,最新分支用于前沿代码,而集成分支则可以进行质量检查。 替代模型,其中master分支表示最前沿的开发代码,集成分支用于代码的质量保证测试,以及生产分支,用于生产稳定的代码,可以部署。 在这一点上,有关master分支代表什么的部分语义上的问题,但是在master分支上进行主动开发实际上是一种好习惯还是不是那么重要?
32 git  branching 

13
跳到GIT之前应该了解SVN吗?[关闭]
我在一个部门中工作,以前没有人使用过源代码管理,包括我自己。 我正在努力推动这一概念。我花了一些时间研究SVN。我学了一些基础知识。我可以使用命令行或Tortoise创建/更新/签出/提交。我开始学习如何标记和分支,但是仍然对分支和主干之间的冲突感到困惑。我仍在学习,但是我没有一个能向我展示任何东西的自然人。它全部来自书籍/教程以及反复试验。 根据我在网上阅读的内容,似乎git最好了解一些东西,但是它也更加复杂。我不想让自己不知所措。我应该在转入git之前继续掌握svn还是现在明智地跳到git? 两种方法都有优点和缺点吗?
31 svn  git 

4
何时不应该对提交进行版本标记?
上下文:我最近发现了语义版本控制,并且正在尝试确定如何在我自己的项目中最佳地实际使用它。 鉴于semver需要对主要更改,次要更改和补丁进行版本控制,何时不应使用更​​新的版本标记提交?在我看来,每项更改都将属于这些类别之一,因此,应对每项更改进行版本控制,但是当我查看GitHub上的各种流行项目时,这似乎并不是事情的完成方式(只是看一下实际上,大型项目只有数以百计的标签才有成千上万次提交。

3
适用于多个活动版本的Git工作流程,同时处理修补程序
我正在尝试选择最适合我们产品的Git工作流程。以下是参数: 我们一年会发布一些主要版本,最多可以说10个 我们同时有多个版本的产品处于活动状态(有些人使用v10.1,有些人使用v11.2,依此类推) 我们需要能够同时处理多个发行版(因此我们可以处理v12.1,但是当我们到达发行版末尾时,我们将同时开始处理v12.2)。 发现严重错误后,我们需要能够修复版本 到目前为止,这是我认为它可以工作的方式: 使用单个远程仓库 从master创建分支12.1 根据12.1创建要素分支,提交并合并回12.1,然后按入 一旦我们需要开始开发将来的版本,请基于12.1创建一个新的分支12.2。 从那时起,在使用12.1的功能时,从12.1创建分支,提交更改,然后合并到12.1和12.2中, 如果使用12.2的功能,请从12.2创建分支,提交更改,然后仅合并到12.2, 版本12.1完成后,将其合并到master和tag master分支中,并带有12.1 如果需要修补程序,请从需要该修补程序的最早的发行分支创建修补程序分支,提交更改,然后合并回该发行版和可能受影响的将来发行版的所有发行分支;如果最新的稳定版本分支受到影响,请将其合并到master。 我有一些担忧: 我不确定将修补程序从旧分支合并到新分支是否会很顺利,尤其是在存在许多重叠更改的情况下;在看起来有冲突的情况下,在每个分支中手动进行热修复会更聪明吗? 我看到的工作流模型似乎并没有使发行分支保持活跃,一旦完成,发行就被合并到主版本中,被标记并删除了。我的问题是,如果我拥有的只是master中的标签,那么我就不怎么管理发行版的状态,似乎更容易在分支中进行修补,然后有了发行版,我可以随时返回具有最新的修补程序(甚至可以在发行版中标记该修补程序)。不知道有什么办法可以使我回到master内,并以某种方式获取已应用修补程序的发行版副本并更新该标签。 考虑到我已经指定的要求,我对我可能忽略的事情或完成事情的更好方法表示了赞赏。

2
像Git Flow这样的合并策略真的是一种反模式吗?
我的公司正在使用Git,并且正在使用一种特殊的分支方案-工作是在master中完成的,分支保留用于发布。只要在迭代中完成的所有工作都可以进入分支,就可以很好地工作,但是,如果出现关键的生产问题,我们必须确保将工作以某种方式进入两个分支。 最近,我们在那些分支机构中获得了一些“乐趣”。这一直是管理上的头疼事,要确保所有工作都进入每个分支,并且某个分支上已修复的一些错误只有在有人指出时才成为主要问题。 我前段时间遇到了Git Flow,我觉得这将解决我们的问题-代码不会一直渗透到发行版中,也不会渗透到整个发行版中。唯一的收获是我的领导说这种发展是一种反模式-疯狂发展了两个星期,然后花了三个星期来解决合并冲突。 我不确定自己是否同意,并且自提出以来,工作恢复正常了。直到最近,我们才有了一些重大的痛点。 我想知道-为什么将这种开发方案视为反模式? 是真的反模式?

3
何时将一个项目分成多个子项目
我想知道将我正在处理的项目分成两个存储库而不是一个存储库是否有意义。 从我可以说: 前端将用html + js编写 .net后端 后端不依赖于前端,前端不依赖于后端 前端将使用后端实现的一个宁静的api。 前端可以托管在任何静态http服务器上。 到目前为止,存储库具有以下结构: 根: 前端/* 后端/ * 我认为将两个项目都放在同一个存储库中是一个错误。由于两个项目之间没有相互依赖关系,因此它们应属于单独的存储库,并且如果需要,则应具有包含子模块的父存储库。 有人告诉我这是没有意义的,这样做不会给我们带来任何好处。 这是我的一些论点: 我们有两个互不依赖的模块。 长期拥有两个项目的源历史记录可能会使事情复杂化(尝试在历史记录中搜索前端中的某些内容,而您有一半的提交与所寻找的bug完全无关) 冲突和合并(这不应该发生,但是让某人推送到后端将迫使其他开发人员提取后端更改以推送前端更改。) 一个开发人员可能只在后端工作,但总是不得不拉扯前端或反过来。 从长远来看,将是时候进行部署。以某种方式,前端可以在拥有一个后端服务器的同时部署到多个静态服务器。在每种情况下,人们都将不得不要么克隆整个后端,要么创建自定义脚本以仅将所有前端推送到所有服务器或删除后端。如果只需要一个,则仅推/拉前端或后端比两个都容易。 反驳论点(一个人可能同时在两个项目上工作),使用子模块创建第三个存储库并进行开发。历史记录保存在各个模块中,您始终可以创建标签,在这些标签中,后端/前端的版本确实可以同步工作。将两个前端/后端放在一个仓库中并不意味着它们可以一起工作。它只是将两个历史合并到一个大型仓库中。 如果要将自由职业者添加到项目中,将前端/后端作为子模块将使事情变得更容易。在某些情况下,您实际上并不想授予对代码库的完全访问权限。如果您想限制“局外人”可以看到/编辑的内容,拥有一个大模块将使工作变得更加困难。 错误介绍和修复错误,我在前端插入了一个新错误。然后有人修复了后端的错误。对于一个存储库,在新错误之前回滚也将回滚后端,这可能使其难以修复。我必须将后端克隆到另一个文件夹中,以使后端工作,同时修复前端中的错误……然后尝试重新合并东西……拥有两个存储库将很轻松,因为移动了一个回购的HEAD不会改变另一个。并且针对不同版本的后端进行测试将是轻而易举的。 有人可以给我更多的论据来说服他们,或者至少告诉我为什么将项目分为两个子模块是没有意义的(更复杂的)。该项目是新项目,代码库已有两天的历史,因此修复还为时不晚。

3
重写的版本控制实践
我们用语言X开发了产品(原型)P_OLD,现在我们正从头开始用语言Y将其重写为P_NEW。 由于P_NEW和P_OLD是同一产品: P_NEW应该只是旧的P_OLD分支还是应该是它自己的存储库? 从版本控制角度来看,处理如此大的更改的通常方法是什么?

6
SVN合并有何困难?
可能重复: 我是Subversion极客,为什么我应该考虑或不考虑Mercurial或Git或任何其他DVCS? 有时,您会听到有人说分布式版本控制(Git,HG)本质上比集中版本控制(如SVN)更好,因为在SVN中合并非常困难且痛苦。关键是,我在合并SVN方面从未遇到任何麻烦,并且由于您只听说过DVCS倡导者而非实际SVN用户提出的主张,所以这往往使我想起电视上那些令人讨厌的广告,试图让演员冒充假装您已经拥有并且可以正常工作的东西很难卖给您,从而卖给您不需要的东西。 总是提出的用例是重新合并一个分支,这再次使我想起那些稻草人产品广告;如果您知道自己在做什么,则一开始就不应该(也永远不必)重新合并分支。(当然,当您从根本上做错和愚蠢的事情时,这很难做到!) 因此,撇开荒谬的稻草人用例,SVN合并中有什么比DVCS系统中合并更难?
28 git  svn  mercurial  dvcs  merging 


6
版本历史真的很神圣吗?还是最好重新设定基础?
我一直都同意Mercurial的口头禅1,但是,既然Mercurial与rebase扩展捆绑在一起,并且它是git中的流行做法,我想知道它是否真的可以被视为“不良做法”,或者至少足以避免使用。无论如何,我都知道在推送之后重新部署基地很危险。 OTOH,我认为尝试将5个提交打包到一个文件中以使其看起来更整洁(尤其是在生产分支中)的意义,但是,我个人认为能够对部分功能进行部分提交会更好一些实验已经完成,即使它不是很漂亮,但是看到类似“尝试用X来做,但毕竟不如Y,以Y为基数做Z”这样的内容,恕我直言对那些学习的人来说具有很好的价值。代码库,并遵循开发人员的思路。 我非常自以为是(愚蠢,内脏,有偏见)的观点是,程序员喜欢重新设置基础以隐藏错误……而且我认为这根本不适合该项目。 所以我的问题是:您是否真的发现在实践中拥有这样的“有机提交”(即不受干扰的历史记录)很有价值?或者相反,您是否更喜欢遇到包装精美的提交,而无视程序员的实验过程?无论您选择哪个,为什么对您有用?(让其他团队成员保留历史记录,或者根据需要重新建立历史记录)。 根据Google DVCS分析的1,在Mercurial“历史为神圣”中。
26 git  mercurial  dvcs 

11
分散版本控制系统的业务案例
我搜索了git / mercurial / bazzr系统,使其优于集中式系统(subversion,perforce),但没有找到任何商业原因。 如果您试图将DVCS出售给非技术人员,您会为DVCS 增加利润提供哪些论点。 我将很快向我的经理介绍git,这将需要一些时间来转换出Subversion存储库,并花费一些费用来购买smartgit许可证。 编辑我试图使这个问题成为关于集中式与分散式的一般性讨论,但是不可避免地它变成了git vs subversion。当然,有比颠覆更好的集中式系统。

6
我什么时候应该停止致力于掌握新项目?
每当一个新项目开始时,通常首先要直接向master提交,直到获得“稳定”的东西,然后再开始在分支中工作才有意义。 至少,这是我通常的做法。有没有办法立即从第二次提交开始分支?以这种方式这样做有意义吗?显然,“ Initial Commit”将始终处于主状态,但是在那之后,我何时才知道是为新功能创建分支的合适时间?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.