【问题标题】:Is it possible to specify new local git repository location for existing config?是否可以为现有配置指定新的本地 git 存储库位置?
【发布时间】:2019-06-09 14:34:35
【问题描述】:

默认情况下,我通常运行git init 并将本地存储库放在根目录中。我在一个小型 SSD 上存储和处理我的项目文件,但在同一台机器上安装一个 BIG ol' SATA HD 并没有做太多事情。我在想我应该练习将它用于每个项目的实际存储库。


编辑:
我的意思是我有目录结构:

SMALL-DRIVE > 我的项目 > .git > 存储库文件...
SMALL-DRIVE > 我的项目 > src > 开发文件...

虽然我希望保持第二个原样,但我想将第一个移到

BIG-DRIVE > 存储库 > 我的项目 > .git > 存储库文件... (或类似的东西)

一切都在同一台机器上,我推送到的远程存储库不会有任何变化。

相信我可以通过 git init 这个新项目的新路径(很确定我可以自己弄清楚),但是有没有办法更新现有配置以使用新路径?如果是这样,是否有一个命令可以移动存储库中的当前文件,或者我只是手动移动 .git 目录?

【问题讨论】:

  • 我认为我最初的问题措辞不明确。我基本上想将本地存储库文件存储在与项目根目录不同的目录中(在不同的驱动器上......以利用额外的空间)。请参阅原始问题中的 EDIT

标签: git git-init


【解决方案1】:

[...] 有没有办法更新现有配置以使用新路径?

如果我正确理解了您的问题,您目前有一个小而快的高清存储库,并且您希望

  • 将 repo 的 .git 目录移动到大而慢的 HD,
  • 但仍将 repo 的工作树保留在小而快的 HD 上。

我说的对吗?

在这种情况下,git init --separate-git-dir 就在你的小巷里。引用git init's man page:

--separate-git-dir=<git dir> 不要将存储库初始化为$GIT_DIR./.git/ 的目录,而是在其中创建一个包含实际存储库路径的文本文件。该文件充当与文件系统无关的 Git 符号链接到存储库。

如果这是重新初始化,存储库将被移动到指定的路径。

所以,只需 cd 到您的仓库,然后运行

git init --separate-git-dir <desired-location-on-big-and-slow-drive>

相信我可以通过 git init 这个新项目的新路径 [...]

正确。使用与上述相同的命令。

【讨论】:

  • @juobs - 关于你答案的最后一部分,一切都在小型/快速驱动器上。我想继续在那里进行开发,但将存储库文件存储在大/慢驱动器上。
  • @Daveh0 啊,是的。我误解了你的问题。让我修改我的答案...
  • @jubos - 是的,这正是我想要的。谢谢!!我会尝试一下separate-git-dir
  • @jubobs,GJ 了解 OP 想要什么!我不了解他,但你得到了我的支持 :)
【解决方案2】:

是的,你可以。

选项 1(首选):镜像

只需运行这些命令来镜像存储库:

git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git

查看更多关于镜像here

选项 2:手动克隆和推送

第一步是将存储库git clone 到本地目录。

然后,您使用 git remote add &lt;name&gt; &lt;url&gt; 添加一个新的远程存储库

然后,您可以简单地git push &lt;name&gt; --all 将所有内容发送到那里

【讨论】:

  • 这是一个很好的技巧,但克隆不会保留所有内容(reflog、stashes 等)。
  • @jubobs,stashes 是本地实体,所以我认为我们不应该将它们视为克隆的一部分。关于 reflog,我其实不知道……这是个好问题。
  • 如果我正确理解了这个问题,我认为 OP 不想留下任何东西;如果是这样,存储不应丢失。
  • @jubobs,我认为 OP 没有将他的存储库推送到远程存储库,因此无需复制它们。如果您想了解推送存储所需的操作,请参阅stackoverflow.com/questions/1550378/…
  • 我认为 OP 不想推送或克隆他/她的原始仓库。
【解决方案3】:

将新的远程 git 添加到您的 Git 存储库

git remote add origin git@yourgit.repo

验证新的远程仓库

git 远程 -v

【讨论】:

    猜你喜欢
    • 2012-03-29
    • 2013-10-09
    • 2021-03-10
    • 1970-01-01
    • 2021-02-27
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多