Questions tagged «git»

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

8
git中的“ stage”是什么意思?
我发现git很难理解,因为我找不到用于操作的单词的含义。我已经检查了字典中“ stage”的含义,但这些含义均与源代码管理概念无关。 在git的上下文中,“ stage”是什么意思?

10
我是Subversion极客,为什么我应该考虑或不考虑Mercurial或Git或任何其他DVCS?
我试图了解分布式版本控制系统(DVCS)的好处。 我发现颠覆再教育和本文由马丁·福勒是非常有用的。 Mercurial和其他DVCS促进了使用变更集和本地提交的代码处理新方法。它防止合并地狱和其他协作问题 我们不受此影响,因为我练习持续集成,除非在进行实验,否则不能在私有分支中单独工作。我们为每个主要版本使用一个分支,其中修复了从主干合并的错误。 水星让你有中尉 我知道这对于像Linux这样的大型项目很有用,但是我看不到小型且高度协作的团队(5至7人)的价值。 Mercurial更快,占用磁盘空间更少,完整的本地副本允许更快的日志和差异操作。 我也不对此感到担心,因为即使我正在处理非常大的项目,我也没有注意到SVN的速度或空间问题。 我正在寻找您的个人经验和/或前SVN怪才的意见。特别是关于变更集的概念和整体性能的提高。 更新(1月12日):我坚信值得尝试。 更新(6月12日):我亲吻了Mercurial,我很喜欢。他的樱桃当地风味的味道。我亲吻Mercurial只是为了尝试。我希望我的SVN服务器不要介意。感觉很不对劲。感觉很好。并不是说我今晚恋爱了。 最终更新(7月29日):我荣幸地复习了Eric Sink的下一本书,名为“ 版本控制示例”。他说服了我。我去Mercurial。

20
SVN比Git有什么优势?[关闭]
毫无疑问,关于程序员工具的大多数争论都归结为个人选择(由用户)或设计重点,即根据特定用例优化设计(由工具构建者)。文本编辑器可能是最突出的例子-可以在Windows上工作并且在Mac上可以在Mac上的Haskell中进行编码的编码器,可以实现跨平台和编译器集成的价值,因此可以选择Emacs而不是TextMate等等。 事实证明,新引入的技术真正地优于现有的选件并不常见。 版本控制系统(VCS),尤其是集中式 VCS(CVS和SVN)与分布式 VCS(Git和Mercurial)是否真的是这种情况? 我使用SVN已有大约五年的时间,目前在我工作的地方使用SVN。不到三年前,我转到所有个人项目的Git(和GitHub)。 我可以想到Git相对于Subversion的许多优点(并且在很大程度上抽象出了分布式与集中式VCS相比的优点),但是我想不出一个相反的例子-一些任务(这一点很重要,并且在程序员中很常见)工作流程),Subversion比Git更好。 我从中得出的唯一结论是,我没有任何数据-并不是说Git更好,等等。 我的猜测是存在这样的反例,因此是这个问题。

14
为什么每个人都集中使用Git?
我过去的两家公司都使用Git进行版本控制。据我所知,似乎有90%的公司使用Git而不是其他版本控制系统。 Git的最大卖点之一就是它是去中心化的,即所有存储库都是平等的。没有中央资料库/真相来源。这是Linus Torvalds所倡导的功能。 但是似乎每个公司都以集中方式使用Git,就像一个公司会使用SVN或CVS。人们总是从服务器上(通常是在GitHub上)获得一个中央存储库。我从未见过或听说过(以我有限的经验)人们以真正去中心化的方式使用Git,即按自己认为合适的方式推和拉到其他同事的存储库。 我的问题是: 人们为什么在实践中不使用分布式工作流程? 以分布式方式工作的能力对现代版本控制是否甚至很重要,还是听起来不错? 编辑 我意识到我在最初的问题中没有理解正确的语气。听起来好像我在问,当分布式版本控制系统(DVCS)如此明显地优越时,为什么有人会集中工作。实际上,我想说的是,我对DVCS完全没有任何好处。然而,我经常听到人们鼓吹它的优越性,而现实世界似乎同意我的观点。

6
在git存储库中的单个或多个项目之间进行选择?
在git我们已将大多数项目模块化的环境中,我们面临着每个存储库一个项目或每个存储库设计问题多个项目的问题。让我们考虑一个模块化项目: myProject/ +-- gui +-- core +-- api +-- implA +-- implB 今天,每个存储库有一个项目。它给了自由 release 个别组件 tag 个别组件 但这对于branch组件也很麻烦,因为分支通常api需要和中的等效分支core,并且可能还有其他组件。 鉴于我们希望使用release单个组件,我们仍然可以通过每个存储库设计利用多个项目来获得类似的灵活性。 有哪些经验?您如何/为什么解决这些问题?

14
新开发人员无法跟上分支合并的步伐
我是新开发人员-这是我的第一个编程职位。 我的问题是:我们使用git-我从develop分支中剪切了一个分支,然后开始处理已分配的次要任务。这很慢,因为我没有经验。到我准备将我的分支重新合并到develop其他分支时,已经进行了许多更改,以至于解决冲突变得不知所措(实际上似乎更容易取消工作并重新开始工作,这当然不是可持续的解决方案)。 我该如何克服呢?除了“擅长编码”之外,我还有其他策略可以使用吗?我打算下周与我的主管讨论。

9
为什么认为Mercurial比Git容易?
在进行比较时,在我看来,它们的功能集之间可能存在1:1的映射。然而,经常被引用的说法是“ Mercurial更容易”。该声明的依据是什么?(如果有)
204 git  mercurial 

10
图像应该存储在git存储库中吗?
对于使用Git和Github作为版本控制的分布式团队,图像也应该存储在git存储库中吗? 在大多数情况下,图像不会改变。包含它们的文件夹只会随着添加图像的大小而增加。令人担忧的是,随着时间的推移,图像文件夹可能会通过合并大图像或仅合并其中的许多图像而变得很大。 这是最佳做法吗?还有什么其他方法可以共享分布式团队可以轻松访问的项目中所需的二进制文件?

6
为什么壁挂git提交拉取请求?
为什么我执行的每个严肃的Github回购请求都要求我将提交压缩为单个提交? 我以为git日志在那里,所以您可以检查所有历史记录,并确切查看发生了什么更改,但是挤压它会将其从历史记录中拉出来,然后将其全部合并为一个提交。有什么意义? 这似乎也违反了“尽早提交并经常提交”的口头禅。

4
git的两阶段提交过程(登台)有什么好处?
我正在学习git,我注意到它有两步提交过程: git add <files> git commit 第一步是将修订内容放入所谓的“临时区域”或“索引”。 我感兴趣的是为什么要做出此设计决定,其好处是什么? 另外,作为git用户,您可以这样做还是只使用git commit -a? 我问这个问题,因为我来自不具备此功能的bzr(集市)。

2
Git分支和标记最佳实践
我目前正在通过阅读Pro Git学习使用Git。现在,我正在学习分支和标签。我的问题是什么时候应该使用分支,什么时候应该使用标签? 例如,假设我为项目的1.1版创建了一个分支。完成并发布此版本后,是否应该离开分支以标记发布版本?还是应该添加标签?如果添加标签,是否应该删除版本分支(假设它已合并到master或其他分支中)?

9
在主分支上维护数百个定制分支
当前,我们在共享存储库中为我们的PHP应用程序提供了一个主分支。我们有500多个客户是我们的软件的订户,其中大多数人针对不同的目的进行了一些自定义,每个客户都在一个单独的分支中。定制可以是不同的文本字段名称,全新功能或模块或数据库中的新表/列。 我们面临的挑战是,当我们维护这数百个定制分支并分发给客户时,我们会不时提供新功能并更新我们的主分支,并且我们希望将主分支更改推送到自定义分支以便更新他们到最新版本。 不幸的是,这通常会导致自定义代码中发生许多冲突,并且我们花费大量时间遍历每个分支来解决所有冲突。这是非常低效的,我们发现解决这些冲突时并不少见的错误。 我正在寻找一种更有效的方法来使我们的客户端发行分支与master分支保持最新,这将减少合并过程中的工作量。

6
如何使用Git实现数字版本控制方案?
我的组织正在考虑从SVN迁移到Git。反对搬迁的一种论据如下: 我们如何进行版本控制? 我们有一个基于NetBeans平台的SDK发行版。由于SVN修订版是简单的数字,因此我们可以使用它们来扩展我们的插件和SDK构建的版本号。转移到Git时如何处理? 可能的解决方案: 使用Hudson的内部版本号(问题:您必须检查Hudson才能将其与实际的Git版本相关联) 手动升级版本以保持夜间稳定(问题:学习曲线,人为错误) 如果其他人遇到了类似的问题并解决了该问题,我们将很乐意听听如何解决。

23
为什么Git这么炒作?…而其他人不?[关闭]
近年来,围绕Git的大肆宣传。每个人都知道Git,没人知道替代方案。 像Mercurial这样的其他产品似乎并未引起注意。两者均于2005年发布,并提供类似的功能。此外,通常认为Mercurial更易于使用,更直观,并且长期以来具有更好的UI。因此,可以假定这将是一种流行的替代方法,特别是对于那些刚开始使用分布式版本控制的人。然而,对于大多数人来说,这似乎并不为人所知,与Git的成功相当不同。 这篇文章的重点是试图更好地理解这种现象。 Git如何获得蛋糕的全部?他们是否以某种方式使用了更好的营销?是因为它的社区更……糟糕……“冗长”吗?是因为“ Linus”这个名字吗?是因为它的怪异形象吗? 你怎么看?

11
当每个人都在学习大师时,如何使git痛苦最小化?
我们大约十个人的文档团队最近从SVN迁移到Git。在SVN中,每个人都在研究master。这是我一直讨厌的模型,但我无法带来这种改变。作为迁移到Git的一部分,我们已经同意解决此问题,但我们还不能做到这一点(等待构建更改,以允许从任意分支进行构建)。同时,每个人都在研究大师。是的,我知道这很可怕,相信我。 与使用SVN相比,我们现在看到的麻烦更多,其中一些是由Git的两阶段模型(本地和远程)引起的。有时人们会做出承诺但无法推动,或者他们会与即将发生的本地更改产生冲突。昨天有人以某种方式破坏了最近的更改,但合并失败了,我认为这是Git在您进行合并并进行出色更改时所做的合并。(他无法确切地告诉我他做了什么,并且因为他使用的是GUI,所以我不能只检查他的shell历史记录。) 作为最熟练的Git用户(请阅读:我以前使用过,尽管没有做过任何复杂的事情),我是制定策略,教授工具和清理混乱的人。在我们可以切换到分支上进行开发之前,我如何对使用工具的方式进行更改,以使共享的活动主数据库不易出错? 该小组正在Windows上使用Tortoise Git。我们使用Tortoise Git是因为我们之前使用过Tortoise SVN。(我个人使用Cygwin下的命令行进行某些操作,但是团队已经明确表明他们需要GUI,我们将使用此GUI。)答案应该与此工具一起使用,而不是建议替代工具。 Tortoise Git可以通过一次操作“提交并推送”,我已经告诉他们一定要这样做。但是,它不是原子的-可能会发生提交(毕竟是本地的)的工作,但推送没有(例如,由于冲突或网络问题)。当发生这种情况时,他们会得到一个模棱两可的错误。我已经告诉他们检查BitBucket提交日志,如果他们对最近的提交有任何疑问,如果看不到,则进行推送。(如果那是问题,可以解决冲突,或者如果他们不知道该怎么办,请寻求帮助。) 团队已经有“提早并经常拉”的好习惯。但是,拉力似乎会引起冲突,我认为这是新的吗?如果不是新的,则比SVN中的频率要高得多。我听说我可以更改Git的拉动方式(重新设置基数而不是合并),但是我对那里的权衡(或在我们的环境中如何做到)没有很好的了解。 服务器是BitBucket(不是Github)。我对我们的存储库拥有完全的管理控制权,但更一般而言,服务器上没有。这些都不是可变的。 源文件是XML。还有一些图形文件,每个人都知道您无法合并,但是我们几乎也从来没有冲突。合并冲突来自XML文件,而不是图形。 我可以对Git的使用进行哪些​​更改,以使共享主控团队更加顺畅,直到我们可以使用已审阅,经过测试验证的请求请求的功能分支为止?
123 git  bitbucket 

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.