Questions tagged «git»

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

2
在git中,创建与已删除分支同名的标记是个坏主意吗?
我有一个带有git分支模型的项目,该模型大致遵循nvie的git-flow的模型。 我们的发行分支以SemVer格式命名,例如v1.5.2 一旦发布分支允许生产,我们就关闭该分支,方法是将其合并到master中,应用标签,然后删除该分支。 当我们立即删除发布分支时,我们一直在使用相同的标识符来标记分支,例如 v1.5.2 这是我们用于关闭发布分支的命令: $ git checkout master $ git merge v1.5.2 $ git tag -a v1.5.2 -m "Version 1.5.2 - foo bar, baz, etc" $ git branch -d v1.5.2 $ git branch -dr origin/v1.5.2 $ git push origin :v1.5.2 $ git push $ git push --tags 这似乎在大多数情况下都可行,但是在git …

8
防止分支堆积
随着我们变得越来越大,我们开始遇到问题,其中的功能使其可以分阶段进行测试,但是到所有测试和批准的新功能都在分阶段进行测试时。 这创造了一个环境,在该环境中我们几乎永远无法投入生产,因为我们拥有经过测试和未经测试的功能的组合。我敢肯定这是一个普遍的问题,但是我还没有找到对我们有用的资源。 一些细节: BitBucket上的GIT Jenkins用于脚本部署到Azure 我希望找到一种隔离特征的方法,使它们在环境中移动并仅推送准备就绪的产品。

1
用于编辑某人的拉取请求的礼节
我在GitHub上拥有一个存储库,有人通过一次提交就向该存储库发送了拉取请求。我只想部分实现他的解决方案,并使用用户所做的大约一半代码更改。在这种情况下我该怎么办? 制作其版本的分支,然后返回并复制并将要保留的“旧”代码从原始版本粘贴到第二个提交中。这可能会使提交之间的差异看起来大于实际差异,并抛出诸如之类的东西git blame。 将我要保留的代码复制并粘贴到另一个新的commit中。这意味着他不会因对代码的宝贵贡献而受到赞誉。 与上述相同,将他的一些代码复制到新提交中,但是将提交的作者更改为他而不是我。从技术上讲,他没有写出所提交的确切代码,所以我不确定这是否会被皱眉。但是至少他对使用的这些行有归属。

2
为Maven构建Git存储库的最佳方法
我需要一些有关如何在Git中构建项目的建议。我们使用Java,而Maven是我们的构建工具。Maven kinda假定您所有项目最终都有一个共同的祖先。当事情没有完全按照Apache基金会设置项目的方式进行设置时,Maven可能也是真正的戏剧女王(使用发行插件的任何人都可能知道我在说什么)。 我们想要一个用于控制插件版本和构建配置(仓库配置,要构建的工件,命名约定,插件版本等)的顶级父pom。Maven希望我们所有的IT项目都在该主项目的子文件夹中。这意味着该组织需要进行大量的Git回购。 这将导致非常嘈杂的环境。如果有两个团队从事不相关的项目,那么他们将不得不不断地从另一个团队引入合并。理想情况下,我希望每个项目有一个仓库。 但是,这种情况与Maven的极其分层的模型存在冲突,后者要求子项目是子文件夹。 我需要一些有关人们如何协调这两种模型的建议...谢谢!

1
Gitlab工作流程,强制分支上的代码检查或合并请求
我正在努力通过工作流程策略在我的公司中实施Gitlab。我的想法是,将为开发人员提供访问存储库的权限,但是,无论何时他们尝试提交,都必须对其代码进行审查。 我知道我可以让他们在提交之前创建一个分支,然后在将其推送到存储库之后创建一个合并请求。我仍然不清楚某些事情……我们依靠人们创建分支然后合并请求的想法似乎是错误的,是否存在一种解决方案,该解决方案会强制执行某种策略,除非master分支保持“干净”管理员”批准将要合并到其中的代码。我已经阅读了“ github团队工作流程”,但是它似乎没有提供可行的解决方案。关于过程或您自己的最佳实践的任何建议都将受到赞赏。谢谢!

2
在哪里可以找到“针对Git用户的SVN”资源?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 因此,我从事了该公司使用SVN的工作(但将来会转移到Git)。问题是我不了解SVN。我已经尝试过许多Google查询,而我所能找到的都是SVN-> Git教程,“为什么Git比SVN更好”博客以及一个特定的“备忘单”,它给出了(一些)可比的命令。 缺少阅读O'Reilly关于SVN的书,对于Git用户,向SVN的简要说明(但不是太简短)是什么?
18 git  svn 

4
Git子模块与Git克隆
我正在GitHub上的一个开源项目。 它有一个/ vendor子目录,在其中有几个外部库的副本。项目的原始维护者有时会使用外部库的较新副本来更新此目录。 一位开发商送我的想法拉请求更换该副本由git的子模块。 我正在考虑这是否是个好主意。 Git子模块的优点: 子模块是为类似情况专门设计的 它消除了意外提交给供应商的可能性,该可能性在下次更新时将被覆盖 Git子模块的缺点: 看起来git子模块将复杂性从维护人员推向了要克隆/拉动项目的人员(克隆开始使用项目后需要执行的其他步骤:“ git submodule init”,“ git submodule update” 您对此有何看法? 还有一件事。这个问题是相当小的库,具有非常有限的外部依赖性。我认为目前任何构建工具都不过分。
18 git  github 

3
分支机构中断持续集成吗?
我认为这篇文章《成功的Git分支模型》在经验丰富的DVCS用户中是众所周知的。 我hg主要使用它,但是我认为这种讨论对任何DVCS都适用。 我们当前的工作流程是每个开发人员克隆主存储库。我们在自己的本地仓库上编写代码,运行测试,如果一切顺利,则推送给主服务器。 因此,我们希望设置诸如Jenkins的CI服务器,并通过将来的预配系统(厨师,木偶,ansible等)改善我们的工作流程。 实部 好了,以上介绍的模型很好用,但分支机构可以破坏CI。Feature分支应该与原点同步(根据文章,它将是development分支),以使CI和合并更加顺利,对吗? 说爱丽丝和鲍勃正在研究两个功能。但是爱丽丝第二天就完成了。鲍勃的功能需要一个星期。到Bob完成时,他的更改已过期(也许Alice重构/重命名了某些类)。 一种解决方案是,每天早晨开发人员必须master/origin检查是否有任何更改。如果Alice提交了,Bob应该拉入并合并到他的工作区中,以便他的功能分支是最新的。 这是个好方法吗? 这些分支是否应该存在于主存储库中(不是本地克隆?),这意味着每个开发人员都应向GitHub / Bitbucket上的主存储库授予特权,以便他们可以创建新分支吗?还是在本地完成? 最后,如果分支未与同步,则本文介绍的模型应打破CI origin/master。既然我们要进行夜间构建,开发人员是否应该在离开工作之前进行合并和合并,并且CI也要在每个功能分支上运行?

6
当其他人迅速提交代码库时,我该如何重构它?
我在一个私有项目中,该项目最终将成为开源项目。我们有一些团队成员,他们具有足够的技术来构建应用程序,但没有专门的开发人员来编写干净/美丽的代码,最重要的是长期可维护的代码。 我已经着手重构代码库,但这有点笨拙,因为与我不经常接触的另一个国家/地区的团队中的某人可能会更新此完全独立的内容。 我知道一种解决方案是快速沟通或采用更好的PM实践,但我们还不算大。我只想清理代码并将其很好地合并到他已更新的内容中。使用分支机构是否合适?尽力而为?还有吗

3
2人在一个项目上的工作流程是什么
我是作为一个新手程序员来找您的,他一直在从事自己的项目(进展很好)。我的联合创始人还一直在学习如何编程,并且已经达到了可能开始修复某些问题并使某些事情发生的地步。 他问了一个很好的问题,即“这将如何工作”。我只能从理论上做些什么,因为我从未与其他人一起编程过。您能建议我最好的工作流程吗?我们使用git。 我们应该拥有系统的特定部分吗?签入代码?代码审查? 您如何与> 1开发人员合作?
18 git  github  gitflow 

2
如何在维护多个主要版本的项目上有效使用git-flow?
我已经将我的几个项目迁移到git flow工作流程中,并且我很喜欢它。但是,我还没有找到一种最佳实践来使一个项目同时维护一个以上的主要版本,从而使事情顺利进行。 具体来说,我不是在维护“免费版本”和“付费版本”或任何其他并行模型,我是在谈论一个项目,其中发布了版本1,并且仍支持次要版本(1.1、1.2等) 。),直到发布了第3版为止,此时将维持第2和第3版,直到第4版发布为止。 您如何或将如何在gitflow工作流程中一次维护一个项目的两个或多个受支持版本?
18 git  workflows  gitflow 

2
在Windows上与Bash共享专用SSH密钥
我已经安装了Windows 10和Git。这个Git使用我的C:/Users/MyName目录作为HOME目录以及其中的/.ssh/目录,以适当地获取我的私有SSH密钥。 我刚刚启用并设置了“ Windows上的Ubuntu上的Bash”(真是个大难题!),并且还在其中安装了Git。我希望两个Gits都使用相同的密钥集,这样无论我在此计算机上工作的环境如何,我的提交始终来自我。 麻烦的是,bash中的HOME目录不同(/home/MyName),因此看不到位于现在远处的键../../mnt/c/Users/MyName/.ssh。我以为我可以通过使用以下方法更改HOME环境变量来成为赢家 export HOME=/c/mnt/Users/MyName 这确实成功更改了HOME目录,但bash git仍然看不到该./.ssh目录中包含的密钥。 我不确定这是否是A),因为bash git期望键采用其他文件格式?(当前是id_rsa和id_rsa.pub)B)bash git忽略更改后的HOME变量?或两者兼而有之。 我也不确定C)像这样随意更改HOME变量是否在一般情况下是一个好主意,而其他可能引用它的程序也可以吗?

3
吉特:树枝还是叉子?
我有一个游戏项目,它将有两个版本: 游戏的一个简单版本,核心。 游戏的高级版本。 我的公共存储库中有第一个版本,只有我会进行处理。至于第二版,我的两个朋友将与我合作。关键部分是我希望这两个版本保留在我的存储库中。 我以为可以为此使用分支,但是考虑到这个问题及其答案,就版本控制而言,这不是一个好习惯。据我所知,不可能分叉自己的存储库。 我在这里有什么选择?如何将两个版本都保存在存储库中?

4
开发人员因等待代码使用GitFlow从另一个分支合并而受阻
我们的团队刚刚从FogBugz&Kiln / Mercurial转到了Jira&Stash / Git。我们使用Git Flow模型进行分支,从功能分支添加子任务分支(与Jira功能的Jira子任务有关)。当我们创建一个合并到父分支的拉取请求时,我们使用Stash来分配一个审阅者(通常是开发,但是对于子任务来说是返回到功能分支)。 我们发现的问题是,即使对功能用例进行了最佳的规划和分解,当多个开发人员一起使用同一个功能时,例如在前端和后端,如果他们正在使用相互依赖的代码,在一个单独的分支中,一个开发人员最终阻止了另一个。 随着我们的发展,我们尝试在彼此的分支机构之间拉动。我们还尝试了创建本地集成分支,每个开发人员可以从多个分支中提取它们以在开发时测试集成。最后,这似乎到目前为止对我们来说是最好的,尽管开销更大,我们尝试立即从功能分支创建一个集成分支。当子任务分支(不在功能分支中)准备好进行拉取请求和代码检查时,我们还将手动将这些更改集合并到此功能集成分支中。然后,所有感兴趣的开发人员都可以从该集成分支拉到其他依赖的子任务分支。这样可以防止任何人等待他们依赖的任何分支通过代码检查。 我知道这不一定是Git问题-它与在多个分支中处理相互依赖的代码有关,并与我们自己的工作流程和文化相结合。如果我们没有用于开发的严格代码审查策略(真正的集成分支),则开发人员1可以合并以进行开发,以供开发人员2退出。另一个复杂的问题是,在将功能交付给QA之前,我们还需要在代码审查过程中进行一些初步测试,这意味着即使前端开发人员1正从后端开发人员2的分支直接拉出如果后端开发人员2完成并且他/她的拉取请求在代码审查中待了一周,那么前端开发人员2从技术上讲就无法创建他的拉取请求/代码审查,因为他/她的代码审查者无法测试,因为后端开发人员2' 最重要的是,在这种情况下,我们发现自己采用的是串行方式而不是并行方式,这取决于我们走的路线,并希望找到一种避免这种情况的过程。 我要提到的最后一件事是,我们通过在尚未经过代码审查和定稿的分支之间共享代码来实现,但实际上我们是在使用其他Beta代码。在某种程度上,我认为我们无法避免,并且愿意在一定程度上接受这一点。

1
我的github拉取请求已合并,现阶段的约定是什么?
我在Github上创建了一个项目,进行了一些小改动,并向原始维护者发送了一个拉取请求,后者将其拉入。现在的最后一个提交是Merged pull request #11 from my_username/master。 这是我第一次这样做,所以我不确定现在的礼节是什么:我做了 git pull upstream master然后then git push origin master,现在我自己存储库中的最后一次提交读起来Merged pull request #11 from my_username/master对我来说很奇怪。这是人们通常使用的方式吗?我需要做些什么来“清理历史”吗? 注意:由于这是一个很小的文档更改,所以我没有创建任何分支,我只是在master分支中进行了更改并发送了请求请求。因此,该部分没有任何清理工作。

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.