如何使用Git为现有项目创建新的“本地”远程存储库

时间:2015-02-22 18:48:04

标签: git repository git-remote

我刚刚开始一个新的git项目,到目前为止存储在我的本地Mac上。现在该项目已经进行了一些修改,我想将这些更改推送到网络位置(我的本地网络中有一个Time Capsule,我希望保留所有代码的主副本,而不是推送到Github)。

我目前正在阅读Pro Git书籍,但有一些问题没有解释。我需要解释的要点是git项目和git存储库之间的区别是什么;或者它们是一样的吗?

这是我想要的结构。

我所有项目的远程根位置(在本地)将是:

/Volumes/Capsule/dev/github/...

在这里,我想要我的项目,例如:

/Volumes/Capsule/dev/github/canary
/Volumes/Capsule/dev/github/guinea

canary&几内亚是储存库或项目?

我知道您可以使用表单的命令添加远程: git remote add

我正在努力的例子是:

git remote add local_proj /opt/git/project.git

但是project.git是什么? (或者这是一个错字?不应该是...... / project / .git)

我的金丝雀项目根文件夹是〜/ dev / github / canary 并且git管理文件位于〜/ dev / github / canary / .git

那么金丝雀项目的等效命令是什么?

我从〜/ dev / github尝试了以下内容(canary在此文件夹中)

git remote add canary /Volumes/Capsule/dev/github/canary.git

但收到此错误消息:

fatal: Not a git repository (or any of the parent directories): .git

您在git remote add中指定的引用是每个项目的引用 或每个存储库?我对金丝雀和几内亚有2个不同的参考,或者是 只有一个偏远的地方可以参考金丝雀和几内亚?

1 个答案:

答案 0 :(得分:3)

因此,经过多次实验,我找到了解决这个非常简单的问题的解决方案,似乎无法在一个地方的任何地方充分解释。

(有可能与本地'术语混淆。出于本文的目的,本地'只是指在mac的内部项目的本地位置磁盘而不是网络位置。' Local'(大写' L'),指协议。远程存储库将使用协议Local创建,而不是ssh或http例子)。

local project location: ~/dev/github/...
remote location: /Volumes/Capsule/dev/github/...

所以只是为了重新迭代,问题是需要将项目推送到远程位置;那个远程位置/回购还没有实际存在。

您要做的第一件事是创建远程位置。继续上面的例子,我需要在远程位置创建远程金丝雀项目。此外,由于此远程位置不是工作目录,因此应将其创建为裸存储库:

1)创建远程文件夹:

cd /Volumes/Capsule/dev/github
mkdir canary.git

(注意,如Pro Git 2nd Ed第132页所示,裸存储库以.git后缀命名,例如canary.git)

2)初始化远程位置:

cd canary.git/
git init --bare --shared
Initialized empty shared Git repository in /Volumes/Capsule/dev/github/canary.git/

(需要--shared选项以确保在远程路径上正确创建正确的写入权限,允许您在不发生访问错误的情况下推送它)

现在创建了远程裸仓库,现在可以将其配置为本地现有项目(金丝雀)的推送目标。

3)将远程仓库添加到本地项目金丝雀

返回本地项目

cd ~/dev/github/canary

使用git remote add

添加遥控器
git remote add origin /Volumes/Capsule/dev/github/canary.git

并检查您已完成的工作

git remote -v
origin  /Volumes/Capsule/dev/github/canary.git (fetch)
origin  /Volumes/Capsule/dev/github/canary.git (push)

'来源'现在是您当地金丝雀回购的远程参考。

4)将本地金丝雀项目推送到远程

git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 281 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /Volumes/Capsule/dev/github/canary.git
 * [new branch]      master -> master

你有它,一个本地项目被推送到一个新的本地远程位置。