将 git 存储库放在外部硬盘上

Place git repository on external hard drive

我正在使用 XCODE,并且最近决定尝试使用 git(我是一个孤独的应用开发者,所以从来没有真正需要使用它)。因为之前试过的时候占用空间很大space,所以我现在所有git的项目都存储在外置硬盘上。但是,我想知道是否可以在 mac 的硬盘上保留一个项目的开发分支,同时将主要分支保留在外部硬盘上。这样,我可以每隔几天将稳定分支合并到外部硬盘驱动器,并将开发副本保存在我的 mac 簿上,这样我就无需随身携带外部硬盘驱动器。这可能吗?对 git 上的新手有什么建议吗?

git 不关心存储库位于何处。

您可以在一个硬盘驱动器上创建一个存储库,将其克隆到另一个硬盘驱动器,然后 push/pull 在两个存储库之间分支。

如果您的项目的完整历史真的占用了这么多资源space(但如果确实如此,请重新考虑并检查两次),这可能是一种完成这项工作的方法:

首先在分支 mainremote 存储库(外部硬盘驱动器)中获取完整的历史记录(如果我是你,我会保留默认分支名称 master) .把它做成一个裸仓库是个好主意,以便以后轻松推送。如果您还没有这样做:

$ cd /mnt/your/external/drive
$ git clone --bare /repo/where/you/currently/have/the/whole/history

然后当你想开始一个新的开发阶段时,从 remotelocal(你的笔记本电脑的硬盘)进行浅克隆

$ cd $HOME/
$ git clone --depth 10 /mnt/you/external/drive/repo.git

这会克隆存储库,但只有最后 10 次提交在历史记录中。这样,如果您的历史记录真的很庞大,您将保存 space(如果 space 被历史记录确实是一个问题,请再看一遍)。

像往常一样创建一个工作分支,在该分支中工作,合并到 main,推送到 remote:

$ git checkout -b super_feature   # use good branch names, not "dev"
... work, commit, work, commit, work, commit, ... time to merge.
$ git checkout main
$ git merge super_feature         # I usually add --no-ff
$ git push origin main

好了。您在本地 shallow 克隆了您的 remote,历史有限。

一段时间后,您的浅克隆将拥有越来越多的历史记录。如果历史 space 再次成为问题(但是......你知道的),只需放弃浅克隆并从 remote.

中创建一个新的新克隆