我需要创建一个中央Git存储库,但我有点困惑…
我已经创建了一个裸库(在我的git服务器,机器2):
$ mkdir test_repo
$ git --bare init
现在我需要将文件从本地存储库(机器1)推送到裸存储库(机器2)。我可以通过SSH访问机器2。问题是我认为我不理解裸库的概念……
在裸库中存储代码的正确方法是什么?如何将更改从本地存储库推送到裸存储库?
拥有一个中央存储库的正确方式是拥有一个裸存储库吗?
这个题目我有点搞不懂。请给我一个提示。
我需要创建一个中央Git存储库,但我有点困惑…
我已经创建了一个裸库(在我的git服务器,机器2):
$ mkdir test_repo
$ git --bare init
现在我需要将文件从本地存储库(机器1)推送到裸存储库(机器2)。我可以通过SSH访问机器2。问题是我认为我不理解裸库的概念……
在裸库中存储代码的正确方法是什么?如何将更改从本地存储库推送到裸存储库?
拥有一个中央存储库的正确方式是拥有一个裸存储库吗?
这个题目我有点搞不懂。请给我一个提示。
当前回答
一般的做法是将推送到的中央存储库作为一个裸回购。
如果您有SVN背景,您可以将SVN回购与Git裸回购关联起来。它没有原始形式的回购文件。而您的本地回购将有文件,形成您的“代码”此外。
您需要从本地回购中添加一个远程到裸回购,并将“代码”推入其中。
它会是这样的:
git remote add central <url> # url will be ssh based for you
git push --all central
其他回答
你也可以让git为你创建目录:
git init --bare test_repo.git
——bare标志创建了一个没有工作目录的存储库。裸存储库是中心存储库,您不能在这里编辑(存储)代码以避免合并错误。
例如,当您在本地存储库(机器1)中添加一个文件并将其推到裸存储库时,您无法在裸存储库中看到该文件,因为它始终是“空”的。但是,您确实将一些内容推送到存储库中,并且可以通过克隆服务器(机器2)中的另一个存储库来不显式地查看它。
机器1中的本地存储库和机器2中的“复制”存储库都是非裸的。 裸库和非裸库之间的关系
博客会帮助你理解它。https://www.atlassian.com/git/tutorials/setting-up-a-repository
根据Mark Longair和Roboprog的回答:
如果git版本>= 1.8
git init --bare --shared=group .git
git config receive.denyCurrentBranch ignore
Or :
如果git版本< 1.8
mkdir .git
cd .git
git init --bare --shared=group
git config receive.denyCurrentBranch ignore
可以执行以下命令初始化本地存储库
mkdir newProject
cd newProject
touch .gitignore
git init
git add .
git commit -m "Initial Commit"
git remote add origin user@host:~/path_on_server/newProject.git
git push origin master
您应该从本地存储库处理项目,并使用服务器作为中央存储库。
您还可以阅读这篇文章,它解释了创建和维护Git存储库的各个方面。 Git初学者指南
一般的做法是将推送到的中央存储库作为一个裸回购。
如果您有SVN背景,您可以将SVN回购与Git裸回购关联起来。它没有原始形式的回购文件。而您的本地回购将有文件,形成您的“代码”此外。
您需要从本地回购中添加一个远程到裸回购,并将“代码”推入其中。
它会是这样的:
git remote add central <url> # url will be ssh based for you
git push --all central