Git是否可以永久地在同一个分支上工作?

高级背景

我的工作场所已经存在了数十年,这里的许多员工也是如此。我今年年初加入,但是在其他地方有很多经验。

早在我的第一份工作中,我就自学了Git,这实际上是一个2人项目。我搞砸了很多事情,实践了很多事情,所以我来自敲门打鼓的学校。正如我在给某些部门负责人的电子邮件中所写的

  

[…]我不是git专家。无论好坏,我在这家公司都是:\ […]

我们刚刚从一个过时的源代码控制(锁定文件,复制文件等)切换到了Git / Bitbucket。大多数人(和老朋友)都在适应新协议,而我和其他一些人则在可能的地方提供帮助。

我正在处理的家伙:

有一个家伙,一个年长的家伙,是curmudgeon。我和他相处得很好,但他是一个难以克服的坚果。他不想学习新事物,他希望它很简单。顺便说一句,这不是一个愚蠢的家伙,自从C ++发布以来,他一直在使用C ++进行编程,此外,他还编写了用于从产品(从头开始)连接到数据库的驱动程序。他从事的许多代码都是他自己的东西,本质上是其他部门使用的库,尽管他的大部分工作都在其他人也可以修改的共享代码文件中。

他已经接受我知道我在说什么,但他是老狗; Git基于“差异”与实际文件的概念具有他不希望学习的使用场景,例如创建新分支。他想要一个简单的程序。

在我的辩护中,我是一位非常出色的老师。我曾与许多其他员工一起工作,他们似乎现在就了解了,并正在使用Git / Bitbucket淘汰他们的代码。

他想要什么:

回到curmudgeon,他希望一个分支继续工作。他不想签出新分支,切换分支,也不想知道分支。他希望自己完成工作,提交,提出请求并继续工作。

这只是一个家伙,公司中的大多数人都愿意改变。在过去的一周中,我与他共坐了大约5-6个小时。我之所以喜欢它,是因为我们彼此尊重,我也认为这是我的公司职责,因为我在这方面拥有最完善的装备(很多人发现他很难与他交谈,所以他有点像在自己的泡沫中工作,再加上这里没有多少人我做的Git的舒适度)。此外,他还全神贯注于Git的一些核心基础知识,例如分期,本地与远程等。

尽管并不理想,但如果经常这样做,他会从master分支合并到自己的分支,并在可预见的将来仅在其一个分支上工作,这是否会是“足够好”的解决方法?希望我能逐渐使他成为一个好的“公民”。最糟糕的是,这家伙可能会在几年内退休。

此替代方法是否是定时炸弹?它会破坏主分支的历史吗(假设所有合并冲突都得到正确解决;这对他来说不是问题)?

ilovec_ola 回答:Git是否可以永久地在同一个分支上工作?

对于git,不需要将功能分支合并回去后删除它。特别是如果该功能分支在合并到母版本身之前直接合并了母版。合并回后,两个分支的技巧将(几乎)相同,因此git认为未来发展的基础也相同。 (无论如何,“功能”分支是什么?我只看到父提交...)

您的旧手是继续在合并后的分支上工作,还是在master上分支新分支,并没有多大区别。区别只是新工作的附加提交,最重要的是分支的名称。

实际上,这是git的主要优势之一:像SVN这样的旧版本控制系统在处理合并后有很多麻烦,因此在重新集成到分支中后就不可能更多地使用分支了它的源分支。

对于git,所有分支上的所有提交看起来都相同,并且不在乎将哪个分支名称附加到哪个提交。当git合并两个分支时,它仅确定存储库的公共基本状态,并将两个变更集合并到该基本状态。提交图仅有助于确定公共基本状态,通常是从其启动功能分支或从其最后拉出的提交,但也可以是从master从功能中拉出的提交。科。 (反正是功能分支?!?)

,

这取决于,假设他的分支将是“主”(否则合并该分支的其他人会头疼)

  • 他可以轻松地拉/合并和提交+推他的更改
  • 他将很难在一段时间内处理多个问题。假设由于他不喜欢分支,他也不会使用存储(尽管他可以花费很多时间并使用diff / patch-files并保持所有更新) **很难保持同一文件的多个版本通过上游的更改进行更新,而没有“分支并仅在末尾合并”
  • 很难在功能分支上与他一起工作,通过电子邮件来回发送补丁?
  • 如果还有其他开发人员在使用功能分支,那么他的更改在gitk中将不如所有提交的平行细线那样好看,相反,他只能是精通者

当然可以,但是要付出一定的代价。同一项目的不同工作流程, 之后对功能的分析更加困难,对合并错误的跟踪也更加困难(是的,无论开发人员的勤奋程度如何,它们都会发生)。

我确信具有数十年经验的C ++人士几乎了解他的知识和工具 用指尖和谐地工作。所以从他的角度来看,git不是 帮助他表现更好,但这是一个障碍。仅对较少的人有用 比他专业的技术,迫使专业人士改变人们几乎完美的工作流程 谁都不在附近提醒他和你自己,你可能会很高兴 并不是要帮助他,而是整个团队/公司/项目都需要他的帮助。

底线取决于开发人员的数量,更改的频率,在不同功能上并行工作的可能性,这几乎是不可能的,或者是很多时间 浪费了本来可以用于新功能的东西。

本文链接:https://www.f2er.com/3115882.html

大家都在问