我有一个使用gitolite设置的中央git repo.
我想设置一个钩子,这样每当用户推送到repo时,它会执行其他地方的拉动,然后进行一些自动化测试.
到目前为止,我只想表现它.
在hooks目录中,我在更新后创建了以下脚本名称:
#!/bin/sh
cd /home/git/www/epicac
git pull
Run Code Online (Sandbox Code Playgroud)
当我使用./post-update调用此脚本时,它完全符合我的要求.
但是,每当我挂钩时自动调用它,我得到:致命:不是git存储库:'.'
知道为什么会这样吗?
我发现git有一种特殊的行为,我每次都可以在我的机器上重现它.
如果我有两个本地存储库,一个裸存在文件夹内express.git,另一个非裸存在文件夹中的工作树,两个都在同一个父文件夹中,我可以git pull ../express.git从express文件夹内部执行命令.这会自动更新内部的一切express.
但是,如果我git --git-dir /home/cisw470p/stu006/express/.git pull /home/cisw470p/stu006/express.git master从位于任一git存储库中的位置运行命令,则expressrepo将提取更改,但不会自动更新工作树.然后我必须运行git add .以添加所有更改,然后从内部进行另一次提交express,现在一切都很好.
为什么使用--git-dir选项的命令的长版本不能自动更新工作树express?有这个原因,还是我发现了一个错误?
编辑:我只是再次尝试,但编辑了一个不同的文件,现在它工作.我完全迷失了.
谈到git,我是新手,我在这里看了一些视频教程
看完这些教程后,我尝试使用ssh与我的朋友建立一个git repo
注意:
我设法在一个文件夹中设置我的代码,让我们说"folder1"使用
git init
Run Code Online (Sandbox Code Playgroud)
哪个有我的代码文件.
然后我在我的朋友机器上创建一个空的存储库让我们说' folder2',然后我使用了folder2一个裸存储库
git init --bare --shared
Run Code Online (Sandbox Code Playgroud)
现在我想将共享仓库设置为folder1代码的存储库之后,我尝试使用ssh在裸仓库上添加远程仓库
git remote add origin myFriend@hisIp:/LocationToFile
Run Code Online (Sandbox Code Playgroud)
在此之后,我推送了代码,这给了我一个成功的消息
现在的问题是git repo' folder2'仍然显示一个空的repo(带有空存储库的文件夹)并且我不能执行git操作,folder2即使我做" git status",我得到" fatal: This operation must be run in a work tree"