Questions tagged «git»

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

4
为什么大型金融/保险公司应使用git和/或github
我为金融/保险行业的一家大型企业(雇员3万)工作。虽然“ IT”不是我们的主要重点,但老实说,这些都是信息驱动的行业,具有更好技术优势的公司似乎能更快地取得发展。 我公司有很多软件开发团队。它们遍布整个版本,具有版本控制功能,更不用说使用的语言/框架了。有些人不使用任何(我知道),一些人使用PVCS,一些人使用VSS,最开明的人使用SVN。 我想将git带入我的企业。更具体地说,我想引入GitHub(私有存储库)。我知道合适的人可以谈论这个话题,但老实说,由于诸如安全隐患或我们的竞争对手都没有使用它这样的大举动作,通常在大型企业环境中会被击落。仅引用jQuery,Ruby on Rails,Facebook等作为参考)。 所以我的问题是这个。大型企业为何应缓慢而有意识地从PVCS / VSS / SVN切换到托管git解决方案(如GitHub,私有仓库)的最令人信服的原因是什么。当然,我的计划的一部分涉及到一个不必要的开发项目的POC。

2
在主服务器上启动请求请求或执行本地合并提交是否更好?
我使用GitHub已经有一段时间了,通常我会先推送功能分支,然后启动我自己合并的Pull Request。我发现它帮助我跟踪合并分支的位置。 但是最近我越来越多地阅读了有关Git的工作原理,我意识到我可以在合并分支时使用merge-commits进行引用。 因此,将功能分支合并到master中时,我该怎么办:在master上 执行merge-commit,然后将其推送到上游,或者在本地分支中推送并启动Pull Request? 我已经阅读了两人团队的请求介绍-合并我自己的请求吗?并且请告诉我工作,2人流量大的一个项目和我应该开拉请求从一个分支官方回购或我的叉子?但他们似乎都无法回答我的要求。

2
多个团队的Git工作流程
我们将开始使用Git(尚未使用它),我想定义工作流程。 我们在全球4个不同地点拥有4个团队,共同开发同一产品。每个团队都拥有产品代码的一部分,但是有时他们也必须更改其他团队所拥有的代码。 是否有针对这种环境的Git工作流程的建议? 我已经看过这篇文章,但是这里的方法是“我们尽可能少地创建其他分支”,并且我相信“为每个用户故事分支”方法更多。 另外,本文提出了一种不错的方法。 我想到的是拥有一个master分支,每个团队的一个永久分支,定期合并到master,以及每个用户故事的分支合并到这些团队的分支。有道理还是行不通?

2
了解和记住git rebase参数
到目前为止,git最令人困惑的部分是重新部署到另一个分支。具体而言,令人困惑的是命令行参数。 每次我想将一个分支的一小部分重新建立到另一个分支的尖端时,我都必须查看git rebase文档,这大约需要5到10分钟的时间来理解这三个主要参数的含义。 git rebase <upstream> <branch> --onto <newbase> 有什么好的经验法则可以帮助我记住给任何其他基础重新设置到另一个分支时应将这三个参数分别设置为什么? 请记住,我已经一遍又一遍又一遍(一遍又一遍)遍历了git-rebase文档,但是它总是很难理解(像无聊的科学白皮书之类的东西)。因此,在这一点上,我觉得我需要让其他人参与以帮助我掌握它。 我的目标是,我永远都不必阅读这些基本参数的文档。到目前为止,我还无法记住它们,而且我已经做了很多调整工作。因此,到目前为止,我已经能够记住其他所有命令及其参数,但是却没有使用rebase进行存储,这有点不寻常--onto。
12 git 

5
Git提交尚未完成,但无法在该机器上继续
有时,我遇到的问题是工作站上未提交代码,但尚未准备好提交但需要在其他工作站或笔记本电脑上完成。 是否有人可以解决此问题,例如“软提交”或将更改转移到另一台计算机以在其他地方使用的其他方法? 我希望不要被迫提交和推送未正确实施的更改。
11 git 

3
如何开始将Git用于来自不同服务器的不同代码库?
背景:最近,我在公司继承了一组项目,并且我试图解决一些基本问题,如如何处理。就是说,以前的开发人员(不再在公司工作)没有使用任何形式的源代码控制,只编写了很少的文档,并且实际上并没有任何好的开发过程。 因此,现在我有了三台服务器,这些项目的价值(开发,暂存,生产)由大多数网站和应用程序以及为我们使用的第三方应用程序和API构建的工具组成,直至存储SQL脚本和其他内容。我的第一个想法是在进行更改和修复之前将所有这些信息都放入Git,但是我很难确定最好的方法。 先前的许多开发都是直接在生产服务器上完成的,这在每个服务器的代码库之间造成了鸿沟。目前尚不清楚所有差异在何处-我看到生产方面的错误修复未保留在开发/阶段中,还有开发中尚未转移到阶段/生产中的新功能。 问题:对我来说,组织这些活动并将其移至Git的最佳方法是什么?我将如何构造我的存储库/分支以适应代码中的差异? 我考虑过从生产服务器代码的克隆中继续进行开发,并将开发/登台代码库保留为历史参考。考虑到我对开发/暂存代码一无所知,这可能是一个起点吗?我可以简单地为每个网站,工具,脚本集等创建生产服务器的存储库,为现有的dev / staging代码创建分支,任何新的开发都将从生产服务器的代码库中分支。这有意义吗?

3
github策略,用于保持文件的一个版本私有
我是一位为学生编写编码问题的讲师。我要做的是给学生提供样板代码,并带有占位符以表示学生要完成的功能。我将为学生提供访问私人github存储库的权限,以克隆它。 但是,我还想要一个版本的代码库,以及示例解决方案。显然,我不希望学生可以使用该解决方案(直到作业结束)。 我已经考虑过分支机构,但是AFAIK,我不能将一个分支机构设为私有。 也许我可以将项目分叉到另一个私有仓库中,但是不确定如何将项目保留在snyc中(除了包含解决方案的文件之外)。 有针对这种情况的工作流程吗?
11 git  github 

2
git push force分支是错误的吗?
当我在功能分支上工作时,我倾向于在使用我的工作进行审查并将其集成到主分支之前,使用交互式rebase清理分支中的提交。 在开发功能期间,我想将我的中间工作推送到远程存储库作为备份措施。即,当我的硬盘崩溃时,我不想丢失整个功能分支。 但是,这导致这样一个事实,即git push --force在重新设置基准之后,我经常不得不对远程存储库执行“ a” 操作,这种操作通常不被接受。或如链接的github页面所说: 由于更改提交历史记录可能会使使用存储库的其他所有人感到困难,因此,当您已经将其推送到存储库时,对提交进行重新基准设置是不明智的做法。 是否有解决这一冲突的(通常被接受的)政策? 为什么这不是git的“重订黄金法则”那么重要吗? 我在这里的问题是要寻求一种解决方案,以解决要在远程存储库中备份您的工作和重新部署工作之间的冲突,而另一个问题试图否认存在冲突,并问为什么有些人认为冲突根本存在,并因此问为什么不强制变基是“必要的”?
11 git 

6
在git中,如何对十二个库进行版本控制
我们正在做项目,但是我们在项目之间重用了很多代码,并且有很多包含我们共同代码的库。在实施新项目时,我们发现了更多方法来分解通用代码并将其放入库中。这些库相互依赖,而项目则取决于这些库。每个项目以及该项目中使用的所有库都需要使用它们所引用的所有库的相同版本。如果我们发布某个软件,则我们将不得不修复错误,并可能添加许多年甚至数十年的新功能。我们有大约十二个库,更改通常跨越两个以上,并且几个团队并行处理多个项目,并同时对所有这些库进行更改。 我们最近已切换到git并为每个库和每个项目设置存储库。我们使用存储作为公共存储库,在功能分支上进行新工作,然后发出拉取请求并仅在审阅后合并它们。 我们必须在项目中处理的许多问题都要求我们在多个库和项目的特定代码之间进行更改。这些通常包括库接口的更改,其中一些不兼容。(如果您认为这听起来有些可疑:我们与硬件进行交互,并将特定的硬件隐藏在通用接口之后。几乎每次我们集成其他供应商的硬件时,都会遇到我们当前的接口无法预期的情况,因此必须对其进行完善。)例如,假设一个项目P1使用的库L1,L2和L3。L1还采用了L2和L3,并L2使用L3为好。依赖关系图如下所示: <-------L1<--+ P1 <----+ ^ | <-+ | | | | +--L2 | | ^ | | | | +-----L3---+ 现在,想象一下此项目的功能需要更改,P1并L3更改的界面L3。现在添加项目P2并添加P3到组合中,它们也引用这些库。我们不能将它们全部切换到新界面,运行所有测试并部署新软件。那有什么选择呢? 在中实现新接口 L3 提出请求L3并等待审查 合并变更 创建一个新版本 L3 P1通过参考L3的新版本开始使用该功能,然后在其P1功能分支上实现该功能 提出拉取请求,对此进行审核并合并 (我只注意到我忘了切换L1,并L2到新版本,而我甚至不知道在哪里要坚持这一点,因为这将需要同时做同P1...) 这是一个繁琐,容易出错的过程,并且实施此功能的过程非常漫长,它需要进行独立审核(这使得审核变得更加困难),根本无法扩展,并且有可能使我们停业在过程中陷入困境,我们永远都做不完。 但是,如何使用分支和标记来创建一个流程,使我们能够在新项目中实现新功能而又没有太多开销?

1
在对较早的提交进行修复时,我应该重新设置基础还是添加单独的修复提交?
软件开发中的一种常见情况是代码检查其他人的代码。执行此操作的常用工具是打开请求请求。 我的问题是,当在审查中发现问题时,是否应进行更改 分开提交(新提交) 还是应该修改现有的提交(假设没有人从您先前的提交中分支出来,因为从共享分支重写历史记录是个坏消息)。 对于第一种情况,尽管它会在提交历史记录中增加一些噪音,但是很容易跟踪增量更改。第二种选择具有相反的优点和缺点。

2
在进行具有雇主特定更改的开源项目时,最好的Git工作流程是什么?
在我目前的雇主那里,我们正在使用托管在Github上的开源项目作为应用程序的一部分。我一直在从事这个项目,既添加了我们需要的一些功能,又将其与我们的构建系统集成在一起。我的经理和我都同意,我们将在合理范围内尽可能多地将我们的工作提交给开源项目。我的问题是,最好的工作流程/技术是什么,以这样一种方式来维护我的Git提交,以便我可以轻松地分离出有意义的东西,并重新添加到开源项目中-漏洞修复和足够通用的新功能-特定于我们项目的内容,例如构建位置和应用程序常量。 到目前为止,我一直在维护一个私有的Git分支,在其中我以适当的粒度提交所有更改。然后cherry-pick,我用于将可开源的提交添加到master分支,并将其提交回Github。 似乎我应该使用merge来执行此操作,这样我就不会继续创建具有相同内容的单独提交,但是我不确定如何在排除公司特定的提交并保持合理的工作流程的同时执行此操作。 例如,我想我可以在私有分支上对master和公司特定的东西提交可开源的东西,然后根据需要将master合并到该分支中,而使master分支指向合并之前的提交,这样我就可以再次向其提交可开源的内容,然后再次合并。这个工作流程似乎很尴尬,因为我要做的每件事都要事先确定它属于哪个分支,将其处理为看起来像完成的部分,然后提交并合并再进行测试。我真正喜欢Git的一件事是,要做任何使应用程序正常工作的事情,然后决定以后如何以及在何处提交更改,这是多么容易。据我所知,如果您目前在分支机构中并且已经完成了一些工作, 我正在做一个合理的工作流程以获得长期贡献吗?有人可以推荐一个可能更好的不同工作流程吗?为什么会更好?
11 git 

1
GitHub组织的跨多个存储库的项目?
我已经启动了一个项目,该项目至少涉及GitHub上的三个存储库。 其中一个存储库是一个通用的文档和示例转储,另外两个存储库包含两个程序的实现,这些程序构成了项目的主干。 我是否应该使用GitHub Organization处理此类配置?还是我应该将所有信息与其他十个完全不相关的存储库一起转储到我自己的帐户中?

3
小型团队的Git工作流程
我正在制作一个git工作流程,以在一个小型团队中实施。工作流程中的核心思想: 有一个共享的项目主管,所有团队成员都可以写 所有开发仅在功能分支上完成 功能分支由分支作者以外的团队成员审阅的代码 功能分支最终合并到共享母版中,并且循环再次开始 本文详细解释了此循环中的步骤: https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md 这有意义还是我错过了什么?

3
Git是否具有“安全模式”以防止重写历史记录?
当您对Git(和一般的DVCS)有点新鲜,并且开始探索历史记录的更改时,如果存储库仅是本地的,则可以放心,但是如果使用遥控器并尝试使用推动这种变化。 我期望的一个功能是启用“安全模式”的能力,这基本上会阻止我执行我不应该做的事情……那是什么意思?我的意思是对已经推向原点的事物进行历史重写。我无法精确定义它,但这将包括以下情况: commit --amend 当HEAD已被推动时 rebase 非本地分支机构 reset 被推的分支 这些是可能导致下一次push失败的情况的示例(因为IIRC不会快速前进)。我偶然地做了一些,不得不在遥控器上重新创建分支。而且我仍然很幸运能够如此快地执行此操作,以至于没人能拉出我重写的历史记录。 我相信可以识别​​这种类型的更改,并根据需要阻止用户进行更改。也许有一个选择吗? 如果没有,您认为尝试创建它值得吗?您会尝试精确定义如何识别这种“危险的变化”吗?
11 git  dvcs 

3
单一开发人员GIT工作流程(从简单的FTP迁移而来)
我正在尝试确定迁移到VCS对我来说是否明智。我是一个小型组织(5人)中的单个Web开发人员。由于以下原因,我想到了VCS(Git):版本控制,异地备份,集中式代码存储库(可以从家里访问)。 目前,我通常在实时服务器上工作。我进入FTP,进行修改并保存,然后重新上传并刷新。编辑通常是针对CMS的主题/插件文件(例如,concrete5或Wordpress)。这很好用,但不提供备份,也不提供版本控制。 我想知道如何最好地将VCS集成到此过程中。我打算在公司的Web服务器上设置一个Git服务器,但是我不清楚如何将更改推送到客户帐户(通常是同一台服务器上的VPS)-现在,我只需使用其详细信息登录到SFTP,直接更改。 我也不确定什么将明智地表示一个资源库-每个客户的网站都会得到自己的资源库吗? 任何见解或经验都将非常有帮助。我认为无论如何我都不需要Git的全部功能,但是基本的版本控制和事实上的云访问将非常有用。 编辑:我已经将其范围缩小到似乎最明智的两个选项。第一个基于ZweiBlumen的答案,即在实时服务器上进行编辑,然后将其提交到(外部)Git服务器。这样做的好处是我的工作流不会有太大变化(有额外的提交步骤,但其他方面是相同的)。 第二个选项是使用XAMPP在本地工作,然后从本地计算机提交更改。仅当站点上线时,我才将完成的文章从本地计算机上传到Web服务器(在最终提交到Git之后立即)。从理论上讲,这似乎还可以,但是如果该站点随后需要修改,并且我将它们放置在实时服务器上(通常这样做),那么我将需要手动复制本地存储区中已更改的文件,然后将这些更改提交给Git服务器。这似乎过分复杂,可能与我当前的工作流程相去甚远。 我认为总的来说,我会给#1选项一个机会,然后看看我如何继续。

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.