我被build议在远程服务器上设置 foo.com/~/bar.com # live webpage content foo.com/~/bar.com.git # a bare repo 所以,从我的本地机器上,我可以做一个 git push 并将它推送到远程机器上的foo.com/~/bar.com.git (完整path是ssh://peter@www.foo.com/~/bar.com.git 如何添加一个钩子 ,以便推后,远程服务器将cd ~/bar.com并做一个git pull以便所有的内容被更新(本地机一样)? (不需要像Mercurial那样运行git update ?) (这是相关的不能git克隆服务器上的文件夹,然后编辑和git推?现在我可以ssh到foo.com和cd ~/bar.com然后在那里等着做一个git pull本地机器,但自动完成会很高兴) 更新 :如果您知道具体细节并且怎么做,请只发布一个答案。 如果你谷歌和发布第一或第二谷歌的结果在这里,它不会帮助。 更新2 :我去了~/bar.com.git/hooks并添加一个新的文件post-receive的内容: #!/bin/bash cd ~/bar.com git pull ../bar.com.git master 还有chmod 755 post-receive ,如果我在本地机器上编辑一个文件,然后git com -m "ok"和git push ,它不会把这个改变放到远程机器的文件夹~/bar.com
我想使用Git中的提交前或提交后钩子,将自动生成的文件添加到相同的提交中,具体取决于在提交中修改的文件。 我将如何去做这件事? 我已经试过这个作为预先提交的钩子,但没有运气: #!/bin/sh files=`git diff –cached –name-status` re="<files of importance>" if [[ $files =~ $re ]] then echo "Creating files" exec bundle exec create_my_files exec git add my_files exec git commit –amend -C HEAD fi 这成功地将它们添加到存储库,但不会将它们添加到提交。 我也试过在post-commit hook和pre-commit检查中使用最后两个exec行,但是也不行。
我正在改变一个分支中的项目,到目前为止,除了我之外别无其他。 不过,最近刚开始的时候,当我git push这个项目的时候,我现在收到了这个回应的一部分: remote: Create pull request for <<my branch>>: remote: https://bitbucket.org/… 我不知道为什么Git给我这个信息,这是我以前从未见过的。 即使我删除了远程分支(用“ git push origin :<<my branch>> ”,我现在仍然得到这个消息!(我成功删除了远程分支,但消息仍然存在)
我们是一个由60多名开发人员组成的团队,他们正在从SVN转到Github。 我们在SVN中有一个进程,在个人文件被locking时,只要开发者想提交代码,他需要让文件的所有者解锁。 我们三个是总共150多个文件的所有者。 解锁之前是一个代码审查。 在Github中,我们计划使用Fork-Clone模型 – 开发团队正在开发的每个项目都将执行一个fork,每个开发人员都会对fork进行克隆,编写代码并提交到源代码,function将向上游做拉请求。 虽然这看起来很好,但问题是当一个大项目交付时,会带来很多复审的变化,从而增加了文件所有者的负担。 此外,这可能发生在后期的发展周期,因此项目可能会受到危害。 我们认为可能的一种方法是在git push被完成到原点(叉)时有钩子。 可以有一个最后的审查git拉到上游。 但是,我们无法find任何github扩展或推钩。 有没有一个快速的方法(阅读,现有的扩展)来做到这一点与Github,或者我们应该使用相同的钩子,我们将使用Git?
如果我在本地仓库repo / .git / hooks / post-commit中创build一个新的钩子脚本,然后运行“git push”钩子被推送到远程? 那么,当其他开发者从同一个地方运行“git pull”时,他们会得到我的新钩子吗?
我写了我自己的自定义后合并挂钩,现在我添加了一个“钩子”目录到我的主项目文件夹(因为git不跟踪.git /钩子的变化),我读了一个地方,我可以从钩子的符号链接到.git /钩子,所以我不必复制文件从一个文件夹到另一个人每次有人改变,所以我试过了: ln -s -f hooks/post-merge .git/hooks/post-merge 但似乎没有工作,为什么? “钩/合并.git /钩子/后合并”工作正常,但作出硬链接是相同的copyin我猜….
我已经在虚拟机上运行gitlabhq rails server,从这个教程https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md执行1-6个步骤,并启动rails服务器执行命令sudo -u git -H bundle exec rails s -e production 。 之后,我创build了用户,使用pipe理工具,并在这个用户下创build了新的项目。 然后我一直试图把现有的项目推到这个回购。 但是在最后一步, git push origin master失败并报错 [远程拒绝]主控 – >主控(预接收勾拒) 附加信息: 1)我没有通过电子邮件激活链接激活用户(项目所有者),因为我没有在服务器端configurationpost服务,在本手册中没有find如何做到这一点的说明。 2)Gitlab服务器生成如何推送项目回购和提示没有repositories/在path。 我的意思是它生成git@mygitlabhost:user/repo.git而不是git@mygitlabhost:repositories/user/repo.git这是正确的。 3)当我试图debugging它时,我打开服务器上回购的pre-receive脚本,并试图输出variables(其中有3个): refs = ARGF.read , key_id = ENV['GL_ID']和repo_path = Dir.pwd并find,那key_id总是空的。 也许问题在这里…如果是这样,请给我build议如何解决这个问题。 谢谢
如果我在这里误用术语,我很抱歉(请纠正我),但我会尽我所能。 我试图在Web服务器上build立一个裸Git回购(hub)和一个开发网站工作副本(prime)。 这篇文章之后,我试图devise它。 我希望当推送到中心仓库时更新开发工作副本。 我的印象是,正确的钩子是post-update ,我创build了这样的: #!/bin/sh whoami cd /path/to/working-copy/ RET=`git pull` echo $RET 更新 当我从本地回购更改到裸集线器时,我从更新后脚本得到以下输出: remote: sites remote: fatal: Not a git repository: '.' 但是,如果我作为用户'网站'SSH进入服务器,并手动执行这个脚本,它是伟大的任何想法,可能会出现这个钩子或脚本错了吗?
在我做一个小的发布和标记之前,我想更新package.json以反映该程序的新版本。 有没有办法自动编辑文件package.json ? 会使用git pre-release hook吗?
在我的脚本中,我经常使用拥有自己的回购库的图书馆(我的或他人的)。 我不想在我的回购中复制这些内容,并在每次出现新版本时都更新它们。 但是,当有人克隆回购时,它应该仍然在本地工作,没有断开链接。 任何想法,我可以做什么?