Questions tagged «git»

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

4
git“重新定金的黄金法则”是如此重要吗?
最近,我与绝对反对在GIT上对功能分支的重新定位策略的人们进行了讨论。这似乎是一种公认​​的模式,仅对本地私有分支使用rebase,但是当有多个人在同一个功能和分支上工作时,从不使用它,这就是所谓的“重新分配的黄金法则”(如此处所述:https ://www.atlassian.com/git/tutorials/merging-vs-rebasing/conceptual-overview) 我只是对此感到惊讶。我花了3年的时间制定了完整的重新调整策略,大约有20位开发人员共同努力,并猜出了什么有效。 该过程基本上是: 创建功能分支,我们将其称为“ myfeature”,并将其推送到origin / myfeature 其他人可能会检查出来并进行处理 您有时可能会从master重新设置它的基准:从“ myfeature”,git rebase origin / master ; 然后,是的,您必须强制使用它。 当其他人想要推送他们的提交时会发生什么?他们只是重新设置它的基础:git rebase origin / myfeature。因此,他们现在处在快速前进的过程中,无需强求就可以推动它。 要遵守的唯一原则是要素分支由某人拥有。所有者是唯一可以推动力量的人。 因此,我承认:只要有推动力,就有犯错误的风险。确实如此。但是也有很多方法可以从错误中恢复,实际上,在3年的开发中,我没有看到很多强制错误,而且当它发生时,我们总能找到一种正确恢复的方法。 那么,为什么这种“黄金基础规则”被如此广泛地接受呢?我还有其他想念的吗?我了解这需要最少的组织(每个策略都需要某些组织),但是它可以工作。
22 git 

5
仅在本地计算机上使用git是否合理?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 仅在本地使用git可以吗?我不想为提供私有存储库的服务付费(例如Github),但我认为git是组织我的封闭源代码项目的好方法。

3
从功能分支合并到母版之前进行代码审查的策略
我和我的团队使用功能分支(带有git)。我想知道哪种是合并到母版之前进行代码审查的最佳策略。 我从master结帐了一个新分支,我们称它为fb_#1 我提交了几次,而不是想将其合并回母版 在合并之前,应该有人进行代码审查 现在有两种可能性: 第一 我将master合并到fb_#1(不是将fb_#1合并到master)以使其尽可能最新 队友查看了主管和fb_#1主管之间的变化 如果fb_#1可以,我们将fb_#1合并到主服务器 优点:审查中没有过时的代码 缺点:如果其他人将“ 1”之间的内容合并。和“ 2”。他的更改将出现在评论中,尽管它们属于另一个评论。 第二名 队友查看结帐点(git merge-base master fb_#1)和fb_#1 head之间的更改 优点:我们可以清楚地看到在功能分支上所做的更改 缺点:评论中可能会出现一些过时的代码。 您认为哪种方法更好?为什么?也许还有另一种更合适的方法?

6
仍然使用Subversion的特定原因?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我想为我的公司选择一个版本控制系统。到目前为止,我知道我有Git,Subversion和Mercurial。 这些天来,我发现Git是最常用的,所以我不禁要问:仍然有任何特定的原因仍然需要使用Subversion,还是应该直接使用Git?

4
我们是Subversion极客,我们想知道Mercurial的好处[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 看过我是Subversion极客之后,为什么我应该考虑还是不考虑Mercurial或Git或任何其他DVCS。 我有一个相关的后续问题。我阅读了该问题,并阅读了推荐的链接和视频,我看到了好处,但是我没有看到人们在谈论的整体思维转变。 我们的团队由8至10名开发人员组成,他们在一个由60个项目组成的大型代码库中工作。我们使用Subversion并有一个主干。当开发人员启动新的Fogbugz案例时,他们将创建一个svn分支,在该分支上进行工作,完成后,它们将合并回主干。有时它们可​​能会在分支上停留更长的时间,并将中继合并到分支以接收更改。 当我看着Linus谈论人们创建分支而不再做分支时,那根本不是我们。我们每周可能会创建50-100个分支,而不会出现任何问题。最大的挑战是合并,但我们在合并方面也相当出色。我倾向于通过fogbugz case&checkin合并,而不是合并分支的整个根。 我们永远不会在远程工作,我们永远不会在分支机构之外建立分支机构。如果您是代码库中该部分中唯一的工作人员,则与主干的合并将顺利进行。如果其他人修改了同一段代码,则合并可能会变得混乱,您可能需要进行一些手术。冲突就是冲突,除非有足够的智能来理解代码,否则我看不出大多数系统在大多数情况下如何做到正确。 创建分支后,接下来要检出60k +个文件会花费一些时间,但这对于我们使用的任何源代码控制系统都是一个问题。 我们没有看到的任何DVCS是否有一些好处对我们有很大帮助?
22 git  svn  mercurial  dvcs 

1
重构在GitFlow分支命名模型中属于什么地方?
我最近开始使用由bitbucket实现的GitFlow模型。我有一件事还不完全清楚。 我们试图通过积压,计划和实施重构任务来定期解决我们的技术债务。这样的重构分支以合并到中的拉取请求结束develop。我的问题是重构分支在哪里属于GitFlow? 使用feature前缀似乎是最合乎逻辑的方法,但是感觉并不完全正确,因为重构不会添加任何新功能。 但是,使用bugfix前缀似乎并不正确,因为没有实际的错误重构修复程序。 另一方面,如果不过度设计,则创建自定义前缀看起来很复杂。 你有这种情况吗?您使用哪种做法解决此问题?请解释原因。

2
优化包含大型二进制文件的git repo
我们的项目约为11GB,其中10个是二进制数据(.png图像)。因此,git diff或git status运算要花费一分钟以上的时间。幸运的是,所有数据文件都以一个漂亮的名称分隔到一个文件夹中data。任务是“避免对二进制文件进行压缩,扩散和其他昂贵的操作”。 考虑将项目分为两个回购。然后data将是一个外部回购,由主源代码回购签出。已决定,使存储库保持同步的开销会太大,尤其是对于处理数据文件的艺术家而言。 明确地告诉git这些文件是二进制文件,不考虑从diffs文件,但是这些文件似乎只是该问题的部分解决方案。 我觉得git属性是解决方案,但是怎么办?还是有比整体仓库更好的体系结构?
21 git  binary 

4
为什么Git .git / objects /文件夹又细分为许多SHA前缀文件夹?
Git在内部将对象(斑点,树)存储在.git/objects/文件夹中。每个对象都可以由从对象内容计算得出的SHA1哈希引用。 但是,对象并不.git/objects/直接存储在文件夹中。而是,每个对象都存储在一个文件夹中,该文件夹以其SHA1哈希的前缀开头。因此带有哈希值的对象b7e23ec29af22b0b4e41da31e868d57226121c84将存储在.git/objects/b7/e23ec29af22b0b4e41da31e868d57226121c84 为什么Git用这种方式细分其对象存储? 我可以找到的资源(例如git-scm 上有关Git内部的页面)仅说明了方法,而不是原因。

3
如果我独自在本地存储库中工作,为什么要推送?
我正在通过适用于Windows的GitHub与Git进行交互,这很有趣,因为我永远不会将存储库推送到GitHub。我正在独自开发它,仅供我使用。我注意到我的提交列在“未同步的提交”下,并且在“历史记录”下显示为“无提交”。这带给我一个问题,除了“历史”下列出的提交外,我还可以通过推送实现什么?
21 git  github 

4
github团队工作流程-分叉与否?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我们是一个由Web开发人员组成的小组,目前正在使用Subversion,但是很快我们将切换到github。 我正在查看不同类型的github工作流,但我们不确定github中针对每个开发人员的整个派生概念是否对我们来说是一个好主意。 如果我们使用fork,我知道每个开发人员都会拥有自己的私有远程和本地存储库。我担心这将使变更集变得困难而又过于复杂。另外,我最大的担心是,它将迫使每个开发人员拥有2个远程控制器:origin(远程分支)和上游(用于“同步”来自主存储库的更改)。不知道这是做事的简便方法。 这类似于此处说明的工作流程:https : //github.com/usm-data-analysis/usm-data-analysis.github.com/wiki/Git-workflow 如果我们不使用派生,则可以使用中央存储库为正在处理的每个任务创建一个分支,然后将它们合并到同一存储库中的development分支中,这样可以很好地解决问题。这意味着我们将无法限制分支的合并,并且在中央存储库中有很多分支可能有些混乱。 尝试过两种工作流程的团队有何建议?
21 git  github 

1
最好的Ruby Git库?
Ruby中最好使用哪个Git库? Git,沙砾,坚固,其他? 背景:我是TicGit-ng的当前维护者,这是一个基于git构建的分布式脱机票务系统,而且我一遍又一遍地听到并听到,Grit是我应该使用的,因为它取代了Git gem,但是似乎缺少文档或缺少功能是因为我自己和其他人未能尝试从已弃用但功能正常的Git切换到较新的Grit宝石。
21 ruby  git 

3
我是否应该使用git stash保存项目的正在进行的更改并将其推送到github以便在其他计算机上访问?
我经常在项目的某些功能上工作,需要休息一下才能使其足够好提交。但是,我每天使用两台不同的计算机进行编码(我的笔记本电脑和我的研究实验室台式机)。例如:我正在家里进行某项功能,然后停下来去实验室。 我不想将云同步(例如Dropbox)与GitHub远程跟踪混合使用。 我只是在(然后推入)代码之前提交了未完成的(和混乱的)代码状态,仅是为了将其拉入另一台计算机以继续工作。我很确定这是一个不好的做法。 不过今天,我git stash在Google搜寻了一下之后遇到了。这似乎是我需要的完美解决方案。 但是,一旦我推送更改,该文档就不会说是否转到github。除此之外,我想知道是否有一种更有效的方式来实现所需的机动性。 提前致谢!
20 git  github  gitflow 

5
为什么git commit不包含在其上创建分支的名称?
在使用功能分支的团队中使用git时,我经常发现很难理解历史上的分支结构。 例: 假设有一个功能分支Feature / make-coffee,并且在master上与该功能分支并行地进行了错误修复。 历史记录可能如下所示: * merge feature/make-coffee |\ | * small bugfix | | * | fix bug #1234 | | | * add milk and sugar | | * | improve comments | | * | fix bug #9434 | | | * make coffe (without milk …
20 git  branching 

4
如何组织个人Git存储库?
我正在建立一个GitHub帐户,并计划将我作为一些近期iOS项目的一部分开发的库免费提供给其他iOS开发人员使用。 我目前大部分代码都没有异地备份,因此,我最初以为我会将所有个人项目或至少所有iOS项目上载到私有GitHub托管的存储库中。但是,我有很多项目,其中很多都是低价值的(即从书本改写而来的学习经验)。GitHub不仅由私有存储库收取费用,而且似乎没有任何分层组织存储库的方法。 我是否缺少某些东西,可以让我使用具有层次结构的git存储库,并在需要时/根据我目前的SVN方式检出碎片? GitHub(或像BitBucket这样的竞争对手)是否具有某些我缺少的项目组织功能? 如果失败了,处理这种情况的普遍接受的“ Git方式”是什么(丢弃不打算发布的项目,将其离线存储,以某种方式将它们捆绑在一起,等等,等等)? 据我所知,我的选择是: 将库放到GitHub上,继续为所有其他项目托管我自己的SVN,使用非VCS解决方案进行异地备份(崩溃), 将我计划在GitHub上发布的库和软件(分别作为公共和私人版本)放置,继续为我不太关心的项目托管我自己的SVN,并且仅可能重新访问以刷新关于如何实现XYZ的记忆,决定如果我的房屋爆裂(双声),我愿意注销它们, 将所有内容放到[GitHub和/或BitBucket]上,通过搜索我需要的内容/在我的[GitHub和/或BitBucket]帐户中维护一些脱机指针集来处理一些可笑的存储库(三重问题)

3
没有Github的类似Github的“拉取请求”
我是一家金融机构的分析师,由于数据敏感性,该机构不会在云中存储任何数据。但是,我取得了一些成功,使我的团队可以使用Git进行代码管理。我想知道是否有任何方法可以在我们自己的服务器中实现类似Github的请求。我感兴趣的特定功能是能够提交变更集以进行注释,而无需将其实际合并到给定的分支中。我喜欢(1)提交更改,(2)已对更改进行审查和评论,以及(3)接受提交或拒绝它的工作流程。是否可以在我们自己的服务器上实现(甚至更好,可以轻松实现)?
20 git  code-reviews 

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.