你推动每一次提交吗? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你推动每一次提交吗? [关闭]相关的知识,希望对你有一定的参考价值。

我想,如果有人能给我更多关于使用git和远程存储库的细节。我还没有使用远程存储库。

对于本地存储库,您提交的更改可能不会太过于破碎。什么被推送到远程存储库?每个本地提交?或者完成的整体工作,然后与其他人的整体工作合并?我认为远程存储库的日志必须令人困惑,如果每个人都推送每个提交。

答案

从远程存储库推送和拉取并不像本地提交那么重要。通常每天推拉几次就足够了。就像@earlonrails所说的那样,更频繁的推动意味着更改冲突的可能性更小,但通常并不是那么大。

按照这种方式考虑,通过提交到本地存储库,你基本上是在说“我相信这段代码。它是完整的。它运行。我已经测试过了。我已准备好让其他人看到它。”如果你想在每次提交后推送到远程存储库,那很好,但只要你定期执行它就没那么重要了。

本地存储库用于跟踪您的更改以保护您的工作。远程存储库用于将工作分发给所有队友并跟踪每个人的更改。您的队友需要访问您的代码,但通常情况并不紧急,可以等到一天结束或者您想要推送时。

另一答案

您可以在方便时推送到遥控器。一次推送一堆提交的唯一问题是您可能需要将更多冲突与更多受影响的文件合并。如果你是git的新手我推荐git ready

遥控器的工作就像当地的回购,但你必须和别人玩得很好。如果其他人在您推动之前推送到遥控器。然后他们必须在您推动之前将其更改。如果您同时触摸同一个文件,由于他们的更改是第一个,您需要将两个更改合并在一起。

另一答案

我尝试尽可能推送每个本地提交(我使用Git)。我很少在本地提交2次或更多次。否则,就有可能无法解决的冲突风险。

我更喜欢使用rebase而不是merge,以保持历史更加线性。如果我在本地有2个提交A和B(B更旧),并且B与即将发生的更改冲突,在解决了rebase上的coflicts后,我必须检查B,检查编译,可能运行测试,然后只切换到A并推送所有。

这就是为什么我宁愿尽快推出我拥有的一切。

另一答案

我一般不同意最好的答案和一些评论。提交和推送都不必对代码的质量负责。

在svn时代,每个人都在同一个分支中工作。代码中的失败很快就会传播给其他人。在这种情况下,您肯定必须保证您的代码质量,这就是为什么svn在许多公司和组织中被git取代的原因。

我们需要弄清楚什么是典型的Git工作流程。假设您的主分支具有某种可行的软件版本。有些人更喜欢使用master分支作为发布分支,而其他人则将其用作开发分支。不要紧。无论何时需要添加功能或修复错误,都可以从主(或其他)分支创建分支。该功能应该足够小,无需对代码库进行大量修改即可处理。在大修改的情况下,应该创建分支层,以便分支的最后一层足够小。

如果每个分支都要添加一个小功能,那么很可能有很多人在同一个分支中工作。如果不止一个人在一个功能上工作,那么该组应该非常小并且经常进行通信,因此,冲突应该很容易解决。如果一次提交或推送出现问题,只有您或您的小团队会遇到问题。

然后我们应该保证代码的质量。我的回答是拉请求。在Github中,您修改代码并提交拉取请求。当您提交pull请求时,您需要保证您的代码可以编译并通过测试。在Gitlab中,您在修改代码之前创建合并请求,但使用WIP标记(正在进行中)。然后修改代码。在删除WIP标记之前,您需要保证您的代码质量良好。此外,代码审查员将是另一层保护。

冲突应该很少发生在您的分支中,但是当您将分支合并到基本分支时可能会发生冲突。您应该在合并发生之前修复它。

唯一的问题与rebase有关。许多开发人员喜欢在提交合并冲突之前重新分支他们的分支,以使git提交历史记录看起来更好。如果您推送到遥控器而其他人使用了您的代码,则rebase会导致令人讨厌的问题。但是,如果您始终在仅修复小功能的分支上工作,则无论如何都不应该使用您的分支。此外,我个人并不喜欢变基因,因为它修改了历史。

因此,我的结论与其他人类似,经常提交并经常推动,但原因不同。

以上是关于你推动每一次提交吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

360浏览器怎样设置每一次打开都有上次未关闭网页

无法保存您的应用信息。再试一次 - iTunesConnect [关闭]

oracle数据库用了定时器查询数据库,每一分钟查询一次,一段时间后导致数据库最大连接数太大

GIT

nodejs 连接mysql数据库进行增删改查操作,是进行一次操作就要 connnect 一次数据库 然后关闭吗?

如何用db2 delete 1万条 提交一次?