Git 使用提醒
Git bare repo 裸仓库
指的是创建一个隐形的本地仓库,并不会创建git工作目录,而只是会创建git版本信息文件在当前目录下。这种仓库专门用于push和pull,而在创建该仓库的Git服务器则看不到工作目录,Git服务器只有版本控制相关信息。要想浏览和修改仓库内容只能通过push和pull。这种仓库专用于远程仓库,在这种仓库下,不允许Git服务器对该仓库做各种git操作,只允许clone该仓库再对cloned仓库做操作。
如果想在 non bare 仓库中进行远程 push ,则需要在 Git 服务端进行相关配置。
non bare 仓库只是不允许进行远程 push 到服务端的当前分支,但是支持 push 到其他分支。
****注意:在仓库中进行过文件修改,包括新建、修改、删除,一开始并不被Git追溯,也就是说Git压根不管这次修改。你需要首先将其git add到Git仓库中。****
git push 后,远程仓库就会直接更新文件吗?
Git 的核心并不是工作目录,而是版本控制信息,即.git目录。远程仓库中的远程指的便是这些信息和内容一起存储的位置在云端。创建仓库类型分为bare和non-bare。前者创建的仓库,不包含自带的工作目录,只有版本信息,不允许在远程仓库本身对仓库直接进行操作,也无法直接看到仓库的内容,只能通过其他开发者对其进行clone来进行操作。后者创建的仓库会以当前目录为工作目录,该远程仓库本身可以对其进行git操作,但默认不允许其他开发者进行push。
工作目录和远程仓库应该是分开的。远程仓库本身只包含版本信息和编码化的内容,工作目录不应该和远程仓库在一个目录下。
如果拥有一个远程工作目录,那么当push过后,远程工作目录并不会变化,变化的是远程仓库的内容,需要在远程工作目录内pull。
现有文件创建远程git仓库的最好办法,就是先在别的文件夹下创建bare git仓库,然后再在现有文件目录下git clone创建的仓库,然后git add .。克隆的git仓库名无法更改,因此需要将现有文件先备份,然后重新新建仓库,仓库名与现有文件所在目录名相同。
远程仓库本身和clone好的工作目录是不同的。虽然都有个.git。
bare 远程仓库并没有.git,在远程仓库内无法对仓库进行操作。即使是non bare,有了.git,它和git工作目录还是有区别的。
当某一用户push了之后,远程仓库便会更新。关键在于,远程仓库clone下的工作目录肯定是不会变化的。也就是说,当某一用户push了之后,不会有任何工作目录发生变化,变化的只有远程仓库的内容。只有重新clone或pull后才能在工作目录显现变化的内容。
实际上,Git远程仓库就是Git服务器,它是核心,任何用户的push都会提交到其中,且任何用户都能pull到其中的内容。Git远程仓库在没有clone时,是看不到其内容的,其内容是被编码化存储在远程仓库文件夹内。
如果想实现某一个客户端自动拉取最新代码,可以使用 Crontab ,每隔几分钟进行一次拉取。或者可以使用 Git hooks 。这样便可以做到利用 Git 来实现项目自动更新。

