如何设置自己的 GIT 服务器?什么是裸/非裸回购?

JM *_*ork 10 git

我正在尝试设置一个简单的 GIT 服务器。我在 Virtual PC(Virtual Box)上安装了 Ubuntu。我安装了 GIT,创建了一个 repo 等

git init 
git add .
git commit "..."
Run Code Online (Sandbox Code Playgroud)

然后在 Windows 上,我做了如下(在 cygwin 上)

git clone jiewmeng@192.168.0.3:proj1
Run Code Online (Sandbox Code Playgroud)

然后尝试进行更改

git commit -am "..."

但得到了类似的东西

看图片

我想我的 GIT 设置有误?我读到它与裸/非裸存储库有关?我应该一直使用裸机吗?我试过

git checkout --bare jiewmeng@192.168.0.3:proj1 
Run Code Online (Sandbox Code Playgroud)

但进入proj1.git了它,里面有奇怪的文件/文件夹,比如(HEAD 等)。什么是设置 GIT 的正确方法?

也有人可以解释裸/非裸存储库,我有点迷茫,使用 GitHub,没有这样的事情!

2011 年 4 月 28 日下午 6 点 UTC+8 更新

我尝试遵循http://www.youtube.com/watch?v=1gNFrPNF9-Y并且在 Ubuntu(服务器)上做了

git init --bare
Run Code Online (Sandbox Code Playgroud)

然后在 Windows (Client/Cygwin) 上做了

git init 
// added readme.txt 
git add .
git commit -m "..."
git remote add origin master jiewmeng@192.168.0.3:proj2
git push origin master
Run Code Online (Sandbox Code Playgroud)

没有错误似乎没问题。但是在 Ubuntu 上,我看不到我的文件在哪里?我在branches/那里看了1 个第 n 个?

les*_*ana 9

“普通”存储库是包含实际存储库和工作副本的目录。实际存储库位于名为 的隐藏子目录中.git。工作副本是您使用的那些文件和目录。

“裸”存储库只是.git目录的内容,没有工作副本。

您不能在裸存储库上工作。您首先必须将裸存储库克隆到普通存储库,然后处理克隆。

在您的第一次尝试中,您创建了一个“普通”存储库。然后你克隆了那个。然后你试图推回正常的存储库。然后你收到了警告。你不应该推送到一个普通的存储库。当您尝试这样做时,Git 会警告您。您应该只推送到裸存储库。

在您的第二次尝试中,您创建了一个“裸”存储库。然后您创建了一个“普通”存储库。然后你从普通仓库推送到裸仓库。即(之一)预期的工作流程。这就是为什么您没有收到错误或警告的原因。

当您想从 Windows 机器和 ubuntu 机器处理您的项目时,您有两个选择:

  1. 创建一个裸存储库(无论在哪里)。然后从该存储库克隆,一个在 Windows 机器上,另一个在 ubuntu 机器上。现在从克隆推送到裸存储库,然后从裸存储库拉取到克隆。不要推送到正常的存储库。

  2. 创建两个普通存储库,一个在 windows 机器上,一个在 ubuntu 机器上。现在,在 ubuntu 上工作时,您可以从 Windows 机器中拉取,反之亦然。不要互相推挤。

底线:只推送到裸存储库。在所有其他情况下,当您认为要从 A 推到 B 时,请转到 B,然后从 A 拉。

看来你对 git 很陌生。请阅读以下一本或两本非常好的书籍:Git BookPro Git