我是 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 允许我从裸本地存储库推/pull 到我的本地存储库?
非常感谢!!任何帮助将不胜感激:)
最佳答案
将您的裸存储库移动到您的 USB 设备(例如,安装在 Z:\
或 /Volumes/MyUsbDevice/
上),或在那里创建一个新的裸存储库。 (我只是想指出您可以随时移动您的存储库)
$ cd /Volumes/MyUsbDevice/
$ mkdir myNewGame.git
$ cd myNewGame.git
$ git init --bare
裸存储库以 Git 的二进制格式包含项目的历史记录,但您的文件无处可寻。这可能就是 SourceTree 感到困惑的原因。
您需要做的是在您要工作的机器上创建此存储库的克隆:
在 Windows 上:
$ git clone Z:\myNewGame.git myNewGame
在苹果机上:
$ git clone /Volumes/MyUsbDevice/myNewGame.git myNewGame
或者您可以在 Sourcetree 中执行此操作,只需将您的 git 存储库在 USB 设备上的位置传递给它即可。
如果您浏览到 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 设备。仅当您要执行提取或 pull 或推送时才需要连接您的 USB 设备。
所以你相当安全,因为你的历史是分布式的,但我仍然建议你定期备份你的裸仓库。
关于git - 如何创建本地 git 存储库并使用 SourceTree 进行管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40244774/