我是git的新手(虽然我以前使用perforce和svn工作)并且我想控制一个Unity项目,但我不想在网上任何地方托管它。 我单独从事这个项目,但我通常在不同的地方使用两台不同的计算机。在过去,我在USB驱动器中有一个SVN存储库,用于从每台计算机中的项目的本地版本更新/提交。
由于我之前从未使用过git而且我想学习,我正在尝试做同样的事情(我知道你不应该以这种方式使用git,但我绝对不想在任何时候主持我的项目在线服务器)。
在阅读了很多关于git的内容之后,我认为我对它与SVN的不同之处有了很好的把握。我一直在按照本教程实现我的目标: http://dexterlin.com/tag/git/
我的桌面上有一个本地git项目,然后使用终端(我在MAC上工作)我在桌面上的另一个文件夹中创建了一个裸存储库。
当我尝试让SourceTree识别裸存储库时出现问题,我无法实现。 但是我也有点困惑,我可以在我的计算机中创建两个不同的文件夹/存储库并将它们链接到SourceTree,但是SourceTree不允许我从一个推送到另一个,怎么样?
我想使用SoruceTree,因为我需要Windows / Mac客户端来处理不同计算机上的git。
以下是问题: - 在git中,我想要做的是什么? - 如何让SourceTree指向我创建的裸存储库? - 将裸存储库复制到USB驱动器以后可以从另一个计算机存储库中获取? - 如何让SourceTree让我从裸本地存储库推送/拉入我的本地存储库?
非常感谢提前!!任何帮助将非常感激:)
答案 0 :(得分:4)
将您的裸存储库移动到您的USB设备(例如,挂载在Z:\
或/Volumes/MyUsbDevice/
上),或在那里创建一个新的裸存储库。 (我只是想指出你可以随时移动你的存储库)
$ cd /Volumes/MyUsbDevice/
$ mkdir myNewGame.git
$ cd myNewGame.git
$ git init --bare
裸存储库包含Git二进制格式的项目历史记录,您的文件无处可寻。这可能是SourceTree迷茫的原因 您需要做的是在您想要工作的机器上创建此存储库的 clone :
在Windows上:
$ git clone Z:\myNewGame.git myNewGame
在mac上:
$ git clone /Volumes/MyUsbDevice/myNewGame.git myNewGame
或者您可以在Sourcetree中执行此操作,只需将其传递给USB设备上git存储库的位置即可。
如果您浏览myNewGame/.git/config
,则会看到如下所示的部分:
[remote "origin"]
url = /Volumes/MyUsbDevice/myNewGame.git
fetch = +refs/heads/*:refs/remotes/origin/*
这是Git存储有关远程裸存储库的信息的地方,这就是为什么将来始终将它安装在同一个文件夹/字母上的重要性。
然后,您可以使用Sourcetree,pull
将从您的USB设备进行更改,push
会将其写入您的USB设备。
您将拥有三个位置的完整历史记录,包括Mac,Windows和USB设备。只有在要执行提取或拉取或推送时才需要连接USB设备。
因为您的历史记录已分发,所以您相当安全,但我仍然建议您定期备份您的裸存储库。