我刚刚开始一个新的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个不同的参考,或者是 只有一个偏远的地方可以参考金丝雀和几内亚?
答案 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
你有它,一个本地项目被推送到一个新的本地远程位置。