我正在通过适用于Windows的GitHub与Git进行交互,这很有趣,因为我永远不会将存储库推送到GitHub。我正在独自开发它,仅供我使用。我注意到我的提交列在“未同步的提交”下,并且在“历史记录”下显示为“无提交”。这带给我一个问题,除了“历史”下列出的提交外,我还可以通过推送实现什么?
我正在通过适用于Windows的GitHub与Git进行交互,这很有趣,因为我永远不会将存储库推送到GitHub。我正在独自开发它,仅供我使用。我注意到我的提交列在“未同步的提交”下,并且在“历史记录”下显示为“无提交”。这带给我一个问题,除了“历史”下列出的提交外,我还可以通过推送实现什么?
Answers:
从技术上来说,您是正确的-如果您不与任何人共享代码,则无需真正推动。
再说一次,您的笔记本电脑有一个由出价最低的人制造的硬盘。在硬盘发生故障之前,您的房屋可能会被烧毁。您可能需要远程查看代码。甚至与某人分享。
现在,有了Github,他们要求一切都公开,或者您需要为私人存储库付费。因此,如果您想自己保留它,则可能需要查看bitbucket,它可以让您执行git,但还提供免费的私人存储库。
另一个选择是将git存储库保存在远程备份的某个位置。但是,如今这样做的好处不仅仅在于使用云SCM提供商,而且没有什么优势。
您还有另一个原因要推送到存储库(即使它以一种或另一种方式在本地):工作站。
我不了解您,但是我使用4台不同的计算机(家用1台PC,1台笔记本电脑,1台Office PC和1台Office笔记本电脑)工作,并将更改推送到公司服务器中正确设置的Git服务器,从而实现了快速同步和无痛。由于Git是DVCS,因此可以利用该优势:它不仅是备份,而且我正在使用的所有不同代码库都可以轻松地合并,检查和分析。
例如,如果您的家用PC是“服务器”(或原始服务器)并且您有一台家用笔记本电脑,则它可以是本地的-这样您就可以轻松保持同步。
旁注:人们经常说“我宁愿使用Dropbox(或任何其他同步服务)”。Git仓库中有大量的对象,因此像这样使用Dropbox太荒谬了。这是一个选择,但我不会说一个好选择。
作为分布式SCM,git区分了“制作工作副本的快照”(提交)和“同步存储库”(推/拉/取)的概念。
如果您只在存储库中拥有一个本地克隆,那么推送就没有意义。但是,使用github,您确实有另一个克隆(在github上),并且将更改推送到那里至少具有一个优点:备份。如果您的计算机死了,那么您仍然可以在github上推送所有内容。
当然,这不是github的主要目的。github是用于共享代码的,因此,如果您的项目位于github上,则可以允许其他人从那里进行拉取,克隆您的项目,对来自其克隆的拉取请求采取行动,甚至给受信任的其他人推送访问您的存储库的权限。
推送的另一个原因是,如果您使用多个本地克隆。这对很多事情都很有用:例如,您可能想同时在两个不同的分支上工作,或者您可能想在存储库中尝试可能具有破坏性的操作;如果所有功能均按预期工作,则可以保留修改后的克隆(或将更改推回原始存储库),但是如果一切正常,则可以删除混乱的克隆并返回到原始克隆(仍保持不变) 。
有些人甚至使用git进行部署:生产版本也是git repo,而更新到较新的版本则需要获取和签出(显然,这仅在不需要构建步骤时才有效)。对于必要的东西,我不一定会推荐它,但是对于较小的东西,它是一个简单而实用的解决方案。