将完成一半的工作推到回购是一种不好的做法吗?
Is it a bad practice to push half done work to a repo?
今天我与一位同事进行了讨论,他批评我将破坏应用程序的代码推送到我们存储库中的功能分支。
基本上,我一直在替换一个在我们的应用程序中广泛使用的库。这是一个在几天内花费相当多小时工作的更改,所以我将它分成几个有意义的提交,但并不是所有的提交都使应用程序处于工作状态(例如,可能有一些损坏的单元测试或一些编译错误)。我通常会尽快将每次提交推送到服务器以保留备份。
今天发生的事情是一位同事错误地将我的分支合并到主分支,不出所料,应用程序对他不起作用。根据他的说法,我永远不应该将任何破坏应用程序的东西推送到 repo 中,即使它在功能分支中也是如此;相反,我应该只将它保存在我的计算机中,直到它稳定为止。
这违背了我之前工作过的公司的做法,所以我来向你请教。你认为这是一种不好的做法吗?如果是这样,您将如何处理可能几天都没有稳定代码库的情况?
没有。只要你不合并你的分支,你就可以推送所有内容。
一些重构需要 ci/cd 处理以进行测试等。
或者您需要推送才能开始基于工具的审核等。
如果您不想合并分支,您可以定义一个前缀,例如 "WIP" 并防止合并此类分支。
“让你电脑上的所有东西都保持正常运行——一旦其他开发人员在你的项目上开发,你就会下地狱。当你生病时,没有人可以接手,等等。
这最终取决于您团队的工作流程,允许或不允许的内容,但我想说这很常见:
特征分支并非始终处于稳定状态
如果他们是,他们就不会在开发中;否则您将不得不主动保留对上游存储库的更改。
Git作为备用
如果将(不完整的)更改推送到远程存储库,则可以免费备份数据。
特征分支清理完毕
当经过大量开发后分支最终变得过于杂乱无章时,可以通过组合(压缩)或拆分它们来重写提交,然后强制推送(git push --force-with-lease
)到功能分支以覆盖上游副本。
有一个完成和合并特征分支的过程
通常称为 pull request 或 merge request,您作为功能分支的开发者 积极地 推广您的更改准备接受审查并可能包含在 master
分支中。
简单地假设你的分支已经准备好并在没有 test/review 的情况下将它合并到 master 中是相当粗心的。也就是说,除非这是您明确同意的工作流程——但我不会考虑这个行业最佳实践。
一些 Git 托管平台还允许强制更改通过 PR/MRs,有些甚至禁止合并遵循特定名称方案的分支(例如包含 "WIP" )。
A "feature branch" 可能会或可能不会共享,因此不清楚您的意思。
但基本上,只要你推送的分支被定义为不与任何人共享,那么你应该可以推送任何你想要的东西(通常它甚至允许强制推送到这样的分支) .
您可以推送您所做的任何更改并发布到您的远程分支。只要没有人合并你的分支,每个人都是安全的,你的备份也被保留了下来。但是对于用例(我遵循),假设您正在 module/feature 工作,其中功能不完整但您已将更改推送到远程。稍后您有另一个 change/addition 或完成了您的功能,现在出于某种原因,您需要知道您对现有代码所做的更改是什么。你会做什么?您必须遍历为单个功能所做的所有提交,如果您有多次 changed/edited 的代码片段,这将非常麻烦。
但是如果你只有一个提交,你会更容易修改你的更改并且耗时更少。
今天我与一位同事进行了讨论,他批评我将破坏应用程序的代码推送到我们存储库中的功能分支。
基本上,我一直在替换一个在我们的应用程序中广泛使用的库。这是一个在几天内花费相当多小时工作的更改,所以我将它分成几个有意义的提交,但并不是所有的提交都使应用程序处于工作状态(例如,可能有一些损坏的单元测试或一些编译错误)。我通常会尽快将每次提交推送到服务器以保留备份。
今天发生的事情是一位同事错误地将我的分支合并到主分支,不出所料,应用程序对他不起作用。根据他的说法,我永远不应该将任何破坏应用程序的东西推送到 repo 中,即使它在功能分支中也是如此;相反,我应该只将它保存在我的计算机中,直到它稳定为止。
这违背了我之前工作过的公司的做法,所以我来向你请教。你认为这是一种不好的做法吗?如果是这样,您将如何处理可能几天都没有稳定代码库的情况?
没有。只要你不合并你的分支,你就可以推送所有内容。 一些重构需要 ci/cd 处理以进行测试等。 或者您需要推送才能开始基于工具的审核等。
如果您不想合并分支,您可以定义一个前缀,例如 "WIP" 并防止合并此类分支。
“让你电脑上的所有东西都保持正常运行——一旦其他开发人员在你的项目上开发,你就会下地狱。当你生病时,没有人可以接手,等等。
这最终取决于您团队的工作流程,允许或不允许的内容,但我想说这很常见:
特征分支并非始终处于稳定状态
如果他们是,他们就不会在开发中;否则您将不得不主动保留对上游存储库的更改。Git作为备用
如果将(不完整的)更改推送到远程存储库,则可以免费备份数据。特征分支清理完毕
当经过大量开发后分支最终变得过于杂乱无章时,可以通过组合(压缩)或拆分它们来重写提交,然后强制推送(git push --force-with-lease
)到功能分支以覆盖上游副本。有一个完成和合并特征分支的过程
通常称为 pull request 或 merge request,您作为功能分支的开发者 积极地 推广您的更改准备接受审查并可能包含在master
分支中。
简单地假设你的分支已经准备好并在没有 test/review 的情况下将它合并到 master 中是相当粗心的。也就是说,除非这是您明确同意的工作流程——但我不会考虑这个行业最佳实践。
一些 Git 托管平台还允许强制更改通过 PR/MRs,有些甚至禁止合并遵循特定名称方案的分支(例如包含 "WIP" )。
A "feature branch" 可能会或可能不会共享,因此不清楚您的意思。
但基本上,只要你推送的分支被定义为不与任何人共享,那么你应该可以推送任何你想要的东西(通常它甚至允许强制推送到这样的分支) .
您可以推送您所做的任何更改并发布到您的远程分支。只要没有人合并你的分支,每个人都是安全的,你的备份也被保留了下来。但是对于用例(我遵循),假设您正在 module/feature 工作,其中功能不完整但您已将更改推送到远程。稍后您有另一个 change/addition 或完成了您的功能,现在出于某种原因,您需要知道您对现有代码所做的更改是什么。你会做什么?您必须遍历为单个功能所做的所有提交,如果您有多次 changed/edited 的代码片段,这将非常麻烦。 但是如果你只有一个提交,你会更容易修改你的更改并且耗时更少。