我需要创建一个中央Git存储库,但我有点困惑…

我已经创建了一个裸库(在我的git服务器,机器2):

$ mkdir test_repo
$ git --bare init

现在我需要将文件从本地存储库(机器1)推送到裸存储库(机器2)。我可以通过SSH访问机器2。问题是我认为我不理解裸库的概念……

在裸库中存储代码的正确方法是什么?如何将更改从本地存储库推送到裸存储库?

拥有一个中央存储库的正确方式是拥有一个裸存储库吗?

这个题目我有点搞不懂。请给我一个提示。


当前回答

根据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

其他回答

一一回答你的问题:

裸存储库是指没有工作树的存储库。这意味着它的全部内容都在。git目录中。

您只能通过从本地克隆推送到裸存储库来提交。它没有工作树,所以没有文件被修改,没有变化。

要有中央存储库,唯一的方法是有一个裸存储库。

根据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

这就足够了:

git remote add origin <url-of-bare-repo>
git push --all origin

请参阅“GIT:如何更新我的裸回购?” 注:

对于裸回购远程引用,可以使用与'origin'不同的名称。 这不会推送你的标签,你需要一个单独的git推送——tags origin。

可以执行以下命令初始化本地存储库

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初学者指南

你也可以让git为你创建目录:

git init --bare test_repo.git