将 git 存储库放在外部硬盘上
Place git repository on external hard drive
我正在使用 XCODE,并且最近决定尝试使用 git(我是一个孤独的应用开发者,所以从来没有真正需要使用它)。因为之前试过的时候占用空间很大space,所以我现在所有git的项目都存储在外置硬盘上。但是,我想知道是否可以在 mac 的硬盘上保留一个项目的开发分支,同时将主要分支保留在外部硬盘上。这样,我可以每隔几天将稳定分支合并到外部硬盘驱动器,并将开发副本保存在我的 mac 簿上,这样我就无需随身携带外部硬盘驱动器。这可能吗?对 git 上的新手有什么建议吗?
git 不关心存储库位于何处。
您可以在一个硬盘驱动器上创建一个存储库,将其克隆到另一个硬盘驱动器,然后 push/pull 在两个存储库之间分支。
如果您的项目的完整历史真的占用了这么多资源space(但如果确实如此,请重新考虑并检查两次),这可能是一种完成这项工作的方法:
首先在分支 main
的 remote
存储库(外部硬盘驱动器)中获取完整的历史记录(如果我是你,我会保留默认分支名称 master
) .把它做成一个裸仓库是个好主意,以便以后轻松推送。如果您还没有这样做:
$ cd /mnt/your/external/drive
$ git clone --bare /repo/where/you/currently/have/the/whole/history
然后当你想开始一个新的开发阶段时,从 remote
到 local
(你的笔记本电脑的硬盘)进行浅克隆
$ 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
.
中创建一个新的新克隆
我正在使用 XCODE,并且最近决定尝试使用 git(我是一个孤独的应用开发者,所以从来没有真正需要使用它)。因为之前试过的时候占用空间很大space,所以我现在所有git的项目都存储在外置硬盘上。但是,我想知道是否可以在 mac 的硬盘上保留一个项目的开发分支,同时将主要分支保留在外部硬盘上。这样,我可以每隔几天将稳定分支合并到外部硬盘驱动器,并将开发副本保存在我的 mac 簿上,这样我就无需随身携带外部硬盘驱动器。这可能吗?对 git 上的新手有什么建议吗?
git 不关心存储库位于何处。
您可以在一个硬盘驱动器上创建一个存储库,将其克隆到另一个硬盘驱动器,然后 push/pull 在两个存储库之间分支。
如果您的项目的完整历史真的占用了这么多资源space(但如果确实如此,请重新考虑并检查两次),这可能是一种完成这项工作的方法:
首先在分支 main
的 remote
存储库(外部硬盘驱动器)中获取完整的历史记录(如果我是你,我会保留默认分支名称 master
) .把它做成一个裸仓库是个好主意,以便以后轻松推送。如果您还没有这样做:
$ cd /mnt/your/external/drive
$ git clone --bare /repo/where/you/currently/have/the/whole/history
然后当你想开始一个新的开发阶段时,从 remote
到 local
(你的笔记本电脑的硬盘)进行浅克隆
$ 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
.