为什么我必须“我必须”;克隆;一个现有的Git存储库来访问它?

为什么我必须“我必须”;克隆;一个现有的Git存储库来访问它?,git,Git,我在BeanStalk上有一个现有的存储库。我想做的就是使用OSX应用程序,它允许我使用GUI(就像我在基于web的BeanStalk网站上所做的那样),比如Tower或Sprout。他们都希望我“克隆”我现有的存储库 为什么我需要这样做,而不仅仅是从OS X应用程序访问它?因为这样,您就可以在本地对克隆进行操作,然后在准备好后推回 这与Tower或Sprout(此处为“git”)使用的(版本控制系统)有关 请参见以下内容之间的区别: a a git中没有任何东西需要这种行为。你尝试使用的应用

我在BeanStalk上有一个现有的存储库。我想做的就是使用OSX应用程序,它允许我使用GUI(就像我在基于web的BeanStalk网站上所做的那样),比如Tower或Sprout。他们都希望我“克隆”我现有的存储库


为什么我需要这样做,而不仅仅是从OS X应用程序访问它?

因为这样,您就可以在本地对克隆进行操作,然后在准备好后推回

这与Tower或Sprout(此处为“git”)使用的(版本控制系统)有关

请参见以下内容之间的区别:

  • a
  • a

git中没有任何东西需要这种行为。你尝试使用的应用很可能只是假设你远程托管代码,比如在GitHub上。如果没有远程存储库,则可以忽略这些说明。

这取决于托管远程存储库的系统上可用的工具

例如,为了能够查看远程存储库的版本历史记录,远程系统上运行的某些东西必须运行
git log
命令或等效命令。您不能自己运行
git log
命令;这仅在本地系统上有效,并且仅当当前目录位于git存储库中时有效

如果您对检查远程系统上的存储库感兴趣,并且该远程系统提供了构建在
git
之上的适当工具,则无需克隆存储库。例如,GitHub提供了一个web界面(在幕后,它可能正在GitHub服务器上存储的repos上运行
git log
和其他命令)

如果您想要Git的全部功能,可以克隆存储库(将其复制到您自己的本地系统)并在本地运行
Git…
命令。当然,大多数命令(除了
git pull
git push
等)不会影响远程回购


这就是Git和其他分布式版本控制系统的工作原理。

版本控制的工作流程与FTP不同。FTP相当简单;编辑一个文件,然后上传。你完了。这也可能是一个问题。您计算机上的文件与托管服务器上的文件匹配…但您的同事不知道这一点。那可能很危险

版本控制将它提升到一个全新的层次。一切都被跟踪。这允许更好的团队协作。编辑内容将与其他人共享,当存在冲突时,将对其进行标记

因为这是一个不同的工作流程,开发工作只在您的计算机上完成。克隆为您提供存储库中所有文件的副本,然后将它们放置在您的计算机上Tower或Sprout可以监视的区域。这些工具将让您知道同事何时推送了更新,然后帮助您更新本地文件(反之亦然)。这些程序对工作流程至关重要,应全天打开并使用

我的工作多次被正常的FTP工作流覆盖。我也对其他人做过同样的事。我很少再使用FTP了。克隆是从计算机上的存储库获取文件的第一步


希望这对你有帮助,祝你好运

现代版本控制的整个理念是,每个开发人员(每个用户)都可以获得自己的项目副本、自己的工作副本(工作区、工作树)。这样,一个开发人员的工作与其他开发人员的工作是分开的,并且不会干扰其他开发人员的工作。(当然,版本控制系统还必须具有合并功能,即加入更改)

分布式版本控制的整体思想是,每个开发人员(每个用户)都可以获得自己的存储库副本、自己的克隆。通过这种方式,一个开发人员可以处理一系列步骤,一系列与其他开发人员分离的提交

请注意,如果您已经在计算机上克隆了存储库,那么所有Git GUI都允许您选择现有的Git存储库(有时从所述存储库内部启动),而不是创建新的克隆。当然,您应该记住通过fetch/pull使自己保持最新,并通过push使远程发布存储库保持最新


也就是说,一些git托管站点/软件伪造者在其web界面中包含了从web浏览器管理/编辑存储库的功能。例如,为文件提供接口和其他操作,创建分支并合并它们;您甚至可以通过GitHub克隆并为您创建pull请求,在外部存储库上提供更改建议

Beanstalk(根据他们在文档中所说的)也支持(在页面底部,左栏)

也有类似于的工具,但我不知道它是否使用GitHub API通过web浏览器编辑远程存储库,或者其他Git GUI要求您将存储库克隆到桌面


当然,对于Beanstalk托管的存储库,这种方式是行不通的;Beanstalk想到了Habichuelas或iOS魔豆。

谢谢你们两位的回复。。。现在我可以看到,因为我使用的是XCode 5新的、漂亮的源代码管理,所以我并不真正需要Tower或Sprout。反过来说,这就是我想弄明白的。