git - 如何创建本地 git 存储库并使用 SourceTree 进行管理?

标签 git version-control atlassian-sourcetree

我是 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/

相关文章:

git - 设置 DotBot 和抗原

Git 为每次推送继续构建我的 'known_hosts' 文件

java - 在 Mercurial 中将稳定分支更改移回主干的正确方法

version-control - 我应该将 .vs10x 添加到源代码管理中吗?

windows - SourceTree Windows Mercurial - 重新打开关闭的分支

git - 在挑选冲突后保留作者

linux - 在多台计算机 (Mac) 之间同步工作环境的最佳方式

version-control - 虚拟机中的版本控制

git - Sourcetree 说未暂存的更改,但命令行没有

git - 将 master 分支 merge 到另一个 Git 分支不会删除分支中的文件