警告:我是GIT的新手!!
我在本地计算机上安装了git。我还将它安装在我们网络上的服务器上。在服务器上,我创建了C:\git
来存放我的代码并共享该目录。所以,我做了:
$cd C:\git
$git init --bare
我在本地计算机上设置了一个新的远程指向“git服务器”的共享目录
$git remote add shared "//shared/path/to/git/folder"
$cd C:\path\to\my\source\code
$git init
$git add -A
$git commit -m "initial push"
$git push shared master
$git checkout -b test
$git push shared test
所以,既然我已经完成了所有这些,当我回到服务器时,我希望在那里看到我的源代码的服务器副本,但我没有看到它。我是否错过了git的全部内容,或者我做错了什么?
答案 0 :(得分:4)
您已初始化bare
存储库。它没有源代码结构。它根本不包含“工作树”。相反,它包含主目录本身右侧的.git子目录的所有内容。
因此,如果您需要在服务器上使用工作副本,则必须使用来自裸仓库的clone
代码。然后pull
最新提交同步它。
答案 1 :(得分:3)
Git将您的源存储为“二进制大对象”(BLOB,或简称为“对象”)。裸存储库(如服务器上的存储库)仅包含那些BLOB,而不是“工作树”,这是您的克隆存储库所具有的,这就是您无法在服务器上看到正常文件的原因。它们位于objects
目录中,根据其内容进行唯一命名。试试这个实验:
git init
echo "hello" > hello.txt
git add hello.txt
dir .git/objects
您会看到一个名为2a
的子目录。查看该目录:
dir .git/objects/2a
您会看到一个名为93d00994fbd8c484f38b0423b7c42e87a55d48
的文件。目录名称(2a
)以及文件名构成文件hello.txt
的内容的SHA1哈希值(字符串“hello”,即)。
现在输入:
git cat-file -p 2a93d00994fbd8c484f38b0423b7c42e87a55d48
您会看到hello.txt
的内容!这是将存储在裸存储库中的对象,这就是为什么你不只是看到文件hello.txt
坐在那里;它被赋予一个特殊的名称,压缩,放在objects
目录中。
随着您的存储库的增长,事情会变得复杂一些,因为随着内容的大小和提交次数的增加,Git会开始将类似的文件打包在一起;所有信息仍然存在,但为了提高效率而进一步压缩。
另一种方法是你可以放心,你的文件确实存储在你的服务器上,你可以创建另一个克隆(不是一个克隆!),你将拥有一个包含所有文件的工作树。
答案 2 :(得分:1)
您需要实际提交文件!
$git add -A
$git commit -m "First commit"