Questions tagged «git»

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

8
Git-直接在master上工作会出现什么问题?
我已经看到了很多有关git分支模型的建议,最普遍的观点似乎是直接在master分支上进行更改是一个坏主意。 我们的一位同事很高兴直接在主分支上进行更改,尽管进行了几次交谈,但他们似乎不太可能更改此更改。 在这一点上,我无法说服一个不擅长直接在师傅上工作的同事,但我想了解会与他的工作方式相抵触的事物,知道何时需要重新访问这个问题。

6
如何处理复杂的合并
这是一笔交易,我加入了一家新公司,并被要求完成在已经近一年没有碰过的分支机构上的工作。同时,主分支机构也在稳定增长。理想情况下,我希望将master分支中的所有更改合并到feature分支中,然后从那里继续工作,但是我不太确定该如何处理。 如何在保留分支两侧的重要更改的同时安全地执行此合并?

4
使用Git Stash作为工作流是否是反模式?
最近,我一直在研究我和我的团队如何使用Git以及我们的工作流程如何工作。我们目前使用的功能分支工作流程似乎运行良好。 我还看到我们团队中的某些人使用基于git stash的工作流。工作流程如下所示: 在主分支上工作(如master) 随手提交 如果需要更改或切换分支,请将未提交的更改推送到存储中 更新完成后,将更改从隐藏项中弹出。 我应该提到,此工作流代替了功能分支工作流。在这里,开发人员只需要在一个分支上工作,而不是采用分支机构就可以按照自己的意愿推送/弹出堆栈。 实际上,我认为这不是一个很好的工作流程,因此分支比以这种方式使用git stash更合适。我可以将git stash的值视为紧急操作,但不能用于日常的常规工作流程中。 定期使用git stash是否会被视为反模式?如果是这样,可能会出现哪些具体问题?如果没有,有什么好处?

4
为什么git不合并没有冲突的相邻行?
我最近了解到,当在git中合并两个分支时,如果相邻两行发生变化,则git声明这是冲突。例如,如果文件test.txt具有以下内容: Line 1: A Line 2: B Line 3: C Line 4: D 在分支中,master我们将其更改为 Line 1: A Line 2: B1 Line 3: C Line 4: D 而在分支中,testing我们将其更改为 Line 1: A Line 2: B Line 3: C1 Line 4: D 然后尝试合并testing为master,则git声明合并冲突。我天真的期望是合并不会发生冲突并产生以下结果: Line 1: A Line 2: B1 Line 3: C1 Line …
25 git  merging 

6
编程学生更容易使用哪种DVCS(git或hg)?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 有一点背景:我正在上大学三年级。学生分为4人一组。几乎每个人都将在Windows下工作(除了像我这样在Linux上的一些人)。作为学校课程的一部分,我们将很快开始为一个真正的客户开发项目,但是我和另一个团队想知道哪种方法最适合彼此共享我们的代码。 我从事兼职工作已有3年,并且在不同项目上同时使用git和mercurial有丰富的经验,因此使用一个或另一个系统没有任何问题。但是,我的队友以前从未使用过版本控制系统。还有另一个团队尝试使用SVN但遇到了重大问题,并且希望尝试其他尝试,因此他们征询了我的意见。 我的想法:听说Mercurial + TortoiseHg在Windows下具有更好的集成,但是我想知道即使我解释了匿名头的概念是否也可能使他们感到困惑。另一方面,我发现git分支对于初学者来说更容易理解(每个程序员的工作分离清晰),但在Windows下效果不佳。

2
当电源关闭时,Git的提交有多健壮?
有一天,我正在使用Git(我仍在使用它),而在提交时,电力中断了。 当我(实际上是电力)回来时,git repo损坏了。我不记得确切的名字了,但这是“无效的引用”之类的东西。 很容易猜到该提交在操作过程中被破坏了(我是通过IntelliJ提交的,它会自动进行索引添加)。也很容易猜到,实际上,“提交”不像具有相同名称的DBMS操作那样具有ACID。 问:有没有办法确保回购变更操作尊重原子性?即,如果电力再次下降,并且我要提交,我希望我的文件系统不处于损坏状态。
24 git 

4
如何使用github,分支机构和自动发布进行版本管理?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 到目前为止,我已经了解了大多数基本的Git / Github概念,但是仍然很难理解全局。 到目前为止,我已经设法使这些事情起作用: 推送提交 与分支机构合作 将Github与Travis CI(一个持续集成系统)集成 通过Travis CI,可以自动构建对master的每次提交,并将该发行版作为ZIP放在Github上的发行版之下。 但是到目前为止,我只从事项目的alpha / beta版本工作,因此我还从未见过实践中的版本发布。 因此,我想了解更多有关版本控制,维护单独的版本,修复版本等信息。 我将如何确保发生以下情况: 我的项目有不同的版本,例如版本1.1.0和2.0.0 能够在版本上推送修补程序,将版本提高到1.1.1或2.0.1,等等。 使一个持续集成系统在提交时自动构建该版本,如果成功,则发布该特定版本的发行版。 我怀疑以下选项之间: 每个版本都需要使用标签吗?如果是这样,一个持续集成系统如何构建自动发布? 我应该为每个版本创建分支吗?如果是这样,那将不会创建大量的分支(例如1.1和2.0分支,修补程序当然会进入该分支) 我将如何指定版本号?是否可以使用一个指定版本号的配置文件,还是可以使用更智能的方法?在这种情况下,这很重要,这将是一个Java项目。

4
如何将库的不同版本置于版本控制之下?您是否使用标签?还是分支机构?还是其他方法?
我最近开始将代码置于版本控制下(在实验室中,我正在SVN下工作,而我自己的代码在github中(显然是git))。在使用版本控制之前,我曾经做过类似的事情。我有一个带库名称的文件夹,其中有许多带版本号的文件夹。每当我想开始使用新版本时,我都会复制上一个版本,将名称更改为新版本并开始实施。 但是,当将文件夹置于版本控制下时,这似乎是多余的。除了冗余之外,如果有人想获得最新版本,那么只要他import/ 她就可以下载所有版本clone。 现在,我看到了使用版本控制执行此操作的许多方法,但是由于我是新手,所以我不知道哪种方法更可维护。 方法1:使用标签 如果我正确地理解了标签,那么您将拥有主分支,您可以进行所做的任何更改并使用版本进行标签。然后,当您想要获得它的工作副本时,您将获得带有特定标签的副本。(如果我错了纠正我) 方法2:分支版本 在这种方法中,主要分支将是开发分支。时不时地制作一个稳定的版本(例如v1.2.0),您为该版本创建一个分支,并且永远不要提交它。这样,如果您要下载某个版本,则可以从该分支获取代码。尽管我说过您从未承诺过这样做,但有可能进行错误修复并承诺到旧版本的分支以保持旧版本运行。例如,如果当前版本为v2.0,但是有些人想要使用v1.2,则可以从中获取另一个分支v1.2,即v1.2.1提交错误修复程序,或者仅将版本保持不变,v1.2然后提交错误修复程序。 所以分支看起来像这样: v1.2.1 v1.2.2 / / v1.0.0 v1.2.0--------- v2.0.0 / / / -------------------------------------- dev 这样,您可以为每个次要版本更新创建分支。(请注意,在上图中,v1.2.1和v1.2.2或在v2.0.0发布之后创建的,因此它们不是v1.2.0和v2.0.0之间的开发的一部分。可以将其视为对较早版本的支持) 方法3:分支发展 此方法与以前的方法相反。主分支将是最新的稳定版本。每当使用新版本时,都将创建一个分支(用于开发),使用您的代码,并在代码稳定后将其与主分支合并。 在这种情况下,分支看起来像这样: ________ ____ ________________ _____ dev / \/ \/ \/ ---------------------------------- latest_version 可能需要结合标签一起执行此操作吧? 问题! 无论如何,我的问题是,根据您的经验,这些方法中的哪一种被证明更实用?有没有已知的最佳方法(可能我没有弄清楚自己)?这些事情通常是怎么做的?

9
在企业环境中使用Git [关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 Git是一个出色的版本控制系统。如果我们排除这一事实,它没有出色的GUI支持,那么它确实很好并且速度很快。但是像Clearcase这样的源代码控件为企业客户提供了大量支持。公司为源代码控制服务器和licesense投入了大量资金。 最近,像Google这样的大多数大公司都在其他版本控制系统上采用了Git。但是该公司有一个强大的开源团队,他们始终为该工具提供开发和支持(他们甚至可能拥有自己的Git定制版本)。同时,大公司并没有真正在意采用开源项目并使之与它们相关。 对于企业环境,尤其是在Windows平台上,Git真的是可靠的工具吗? 对Git的支持存在疑问,因为它是一个开源产品。 是否有提供解决方案和支持的公司?与其他版本控件(如Clear-case)相比,服务器成本如何?

6
将编码进度拆分为有意义的提交而无需太多开销
当处理修订或功能时,有时我会偶然发现其他细微的问题,这些问题可以在几秒钟内即时得到改善。当我立即执行它们,然后提交完成的功能/修复程序时,提交包含不止一件事。例如"add feature X and code clean up"或"fix bug X and improved logging"。最好将其分为两个提交。万一这两个更改发生在同一个文件中,我不能简单地添加一个文件,提交,添加另一个文件然后再次提交。因此,我看到以下三个选项: 在处理某些事物时故意忽略无关的事物。 复制具有两个更改的文件,将其还原,包括一个更改,提交,包括另一个更改,然后再次提交。 不要更改无关紧要的小东西,而是将它们添加到待办事项列表中,然后再做。 我不太喜欢这三个选项,原因如下: 如果不能解决小问题,则代码质量可能会受到影响。如果我有意识地错过了一次不费吹灰之力就可以改善的机会,那我就会感到难过。 这会增加人工工作,并且容易出错。 这对于不太小的待办事项很好,但是将一个微小的项目添加到待办事项列表中并稍后再访问通常比立即修复要花费更长的时间。 您如何处理这种情况?

5
为什么Git用户说Subversion在本地没有所有源代码?
我只是继续阅读关于SO的内容,所以请原谅我,但是我读到的所有内容都表明,与Subversion相比,Git的一个主要优势是Git将所有源代码提供给本地开发人员,而无需在其中做任何事情。服务器。 由于我有限地使用SVN和TortoiseSVN,所以我拥有所有源代码,或者至少我以为自己做到了。例如,我有一个网站。我将其上传到SVN。我仍在本地运行我的网站,不是吗?如果有人提交了更改但我没有连接,则是否拥有Git都没有关系,直到我重新连接到服务器。 我不明白。除了这一点之外,我没有要求对另一种进行重新定义。
23 git  svn 

4
如何进行进行中的重构?
因此,我有一个大项目,正在由我进行重构。我正在更改很多东西,因此没有机会让它尽快编译。我住在我命名的特殊git分支中cleanup(master当然,最终将合并到该分支中)。 问题是,我/我们有一个永远不要提交非编译代码的策略(理想情况下,它也应该起作用,但至少必须编译和链接)。因此,在完成这项艰巨的任务之前,我什么都做不了(审查或簿记)。 这不是我喜欢的工作方式(我相信大多数人每天至少要做一次)。 你怎么看?我有没有解决的办法? 以后可以告诉git汇总提交或其他内容吗?只要它们停留在cleanup分支中,我就可以忍受未编译的提交。 编辑 关于推送/提交的主题:我知道这是一个巨大的差异,但是稍后,当我将自己的内容合并到中时,修订版本将不完整master。因此,如果您浏览历史记录(或git bisect...),那么“本地”修订将可在世界范围内访问。因此,仅在本地提交而不进行推送不是最佳解决方案,因为这将在以后(当主题关闭并忘记一段时间后)给您带来麻烦。 简而言之:本地提交将最终被推送。全局历史记录不应显示未编译的提交。
23 git  refactoring 

5
转到git时,如何处理大型svn历史记录?
编辑:与某些类似的问题不同,例如将多GB SVN存储库移至Git 或 /programming/540535/managing-large-binary-files-with-git 我的方案不涉及几个子项目可以很容易地转换为git子模块,也不能转换为一些非常适合git-annex的非常大的二进制文件。它是一个单一的存储库,其中的二进制文件是测试套件,与相同修订版的主要源代码紧密耦合,就像它们是编译时资产(例如图形)一样。 我正在研究从svn切换旧的中型/大型(50个用户,60k修订,80Gb历史记录,2Gb工作副本)代码存储库。随着用户数量的增加,主干中流失很多,并且功能通常分散在多个提交上,这使得代码审查变得困难。同样,如果没有分支,就无法“排除”不良代码,只有在提交到主干后才能进行检查。我正在研究替代方案。我希望我们可以转到git,但遇到一些问题。 就git而言,当前仓库的问题是大小。那里有很多旧文件,转换为git时用--filter-branch清理它可以将文件大小减小一个数量级,大约为5-10GB。这仍然太大。大型存储库的最大原因是,有很多二进制文档正在输入到测试中。这些文件的大小在.5mb到30mb之间,有数百个。他们也有很多变化。我看过子模块,git-annex等,但是在子模块中进行测试感觉很不对劲,对许多想要完整历史记录的文件都有附件也是如此。 因此,git的分布式特性实际上是阻止我采用它的原因。我并不真正在乎分布式,我只想要便宜的分支和强大的合并功能。就像我假设99.9%的git用户那样,我们将使用一个有福的,裸露的中央存储库。 我不确定我是否理解为什么每个用户在使用git时都要拥有完整的本地历史记录?如果工作流不是分散的,那么该数据在用户磁盘上做什么?我知道在git的最新版本中,您可以使用仅具有最新历史记录的浅表克隆。我的问题是:将其作为整个团队的标准运作模式是否可行?可以将git配置为始终很浅,以便您只能在中央拥有完整的历史记录,但是默认情况下,用户只有1000转的历史记录?当然,可以选择仅将1000 revs转换为git,并保留svn repo用于考古。但是,在这种情况下,在对测试文档进行了数千次修订之后,我们将再次遇到相同的问题。 什么是使用Git含有许多二进制文件,你大回购了良好的最佳实践也希望历史?大多数最佳实践和教程似乎都避免了这种情况。他们解决了几个巨大的二进制文件的问题,或建议完全删除二进制文件。 浅克隆是否可作为正常操作模式使用?还是“骇客”? 子模块是否可以用于在主源版本和子模块版本之间具有严格依赖性的代码(例如,在编译时二进制依赖性或单元测试套件中)? git存储库(在内部)的“太大”是多少?如果可以将其降低到4GB,我们应该避免切换吗?2GB?
23 git  svn 

3
质量检查团队应该在哪里进行Gitflow分支模型的测试
我们是一个庞大的团队(10-12个开发人员和4个质量保证团队),他们使用同一个git存储库处理多个项目。它是一个基于Spring Boot的后端Web服务。我们正在寻找一个好的git分支和部署策略。我们还有一个质量保证团队,可以确保我们的功能能够按预期运行(一定程度上没有错误)。 看了几篇文章后,我感到Gitflow模型对我们来说很好用。我的问题来了。 我们的质量检查团队应该在哪里测试我们的功能? 如果他们在功能分支上进行测试,他们将在这里提出错误,开发人员将对其进行修复,一旦通过质量检查,我们将合并以进行开发。然后质量检查人员将再次在开发分支中进行整数测试。 我们是否应该合并所有功能(在经过单元测试和开发人员的基本测试之后)以开发分支,然后从那里进行质量检查。修复和测试也将在开发中进行。 我很想知道哪种方法对其他人有效。
23 testing  git  branching  qa  gitflow 

4
在GitHub流中,可以将功能分支基于另一个功能分支吗?
我们在项目中使用GitHub Flow,大多数时候,我们从master开一个新的功能分支,在那做一些工作,打开PR,查看代码,然后合并回master。 但是,我目前的工作取决于中正在处理的另一个问题feature-branch-A。从另一个分支创建我的分支是否符合犹太规范,还是违背GitHub Flow的精神? 另一种选择是将我的分支基于master并合并feature-branch-A(经常)进行的更改。 GitHub流中首选哪个选项?
22 git  github  gitflow 

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.