我将我的应用程序(node.js)部署在VPS(linux)上.我正在使用git hub作为存储库.如何在git push上自动部署应用程序?
我是git的新手,所以如果我在这里滥用术语,我会道歉(请纠正我),但我会尽我所能.
我正在尝试在Web服务器上设置一个裸git repo(hub)和一个开发站点工作副本(prime).我试过在这篇文章之后模仿它.我希望每当推送集线器repo时都要更新开发工作副本.我的印象是,正确的钩子是这样的post-update
,我已经创建了这样:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Run Code Online (Sandbox Code Playgroud)
当我将更改从本地存储库推送到裸集中心时,我从更新后的脚本中获得以下输出:
remote: sites
remote: fatal: Not a git repository: '.'
Run Code Online (Sandbox Code Playgroud)
但是,如果我以用户"站点"的身份SSH进入服务器并手动执行此脚本,那么这个钩子或脚本可能会出现什么问题?
如果我在repo/.git/hooks/post-commit中的本地存储库中创建一个新的钩子脚本然后运行"git push"钩子被推送到远程?然后,当其他开发人员从同一个来源运行"git pull"时,他们会得到我的新钩子吗?
我编写了自己的自定义后合并钩子,现在我在我的主项目文件夹中添加了一个"hooks"目录(因为git不跟踪.git/hooks中的更改),在某处我读到我可以从钩子中创建一个符号链接到.git/hooks所以每次有人更改时我都不必将文件从一个文件夹复制到另一个文件夹,所以我尝试了:
ln -s -f hooks/post-merge .git/hooks/post-merge
但它似乎没有用,任何想法为什么?"ln hooks/post-merge .git/hooks/post-merge"工作正常,但制作一个硬链接就像copyin一样我猜....
如何设置git在每次提交到本地仓库后自动推送到远程仓库(包括自动提供我的密码)?
使用一个官方存储库作为远程数据库,并从中克隆多个本地存储库,是否可以在该主存储库上编写预提交钩子并在其所有克隆上强制执行?
我们是由60多名开发人员组成的团队,他们正在开发相同的产品,并且正在从SVN迁移到Git和GitHub.我们在SVN中有一个进程,在单个文件被锁定的情况下,每当开发人员想要提交代码时,他都需要由文件所有者解锁.我们三个人是150多个文件的拥有者.解锁之前是代码审查.
在Github中,我们计划使用Fork-Clone模型 - 每个项目正在开发的一组dev将执行fork,每个开发人员都会执行fork的克隆,编写代码并提交到origin,the lead of the功能将向上游执行拉取请求.
虽然这看起来很好,但问题是当一个大项目交付时,它会带来大量的更改以供审阅,从而增加了文件所有者的负担.此外,这可能发生在后期的开发周期中,因此项目可能会受到危害.
我们认为可能有用的一种方法是在git push完成原点(fork)时使用钩子.可以有一个最终评论git pull to upstream.
但是,我们找不到任何github扩展或推送挂钩.有没有一个快速的方法(阅读,现有的扩展)与Github这样做或我们应该使用我们将与git使用相同的钩子?
我看过githooks手册页,但除非我遗漏了一些东西,否则我看不到本地推后git钩子的选项.在将主分支推送到GitHub仓库之后,我想有一个更新我的Web服务器上的api文档(我已经有一个脚本).当然我可以编写自己的脚本,结合git push和api docs run,但感觉有点不优雅.
我想使用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
Run Code Online (Sandbox Code Playgroud)
这会成功将它们添加到存储库,但不会将它们添加到提交中.我也尝试在post-commit钩子中使用最后两个exec行以及pre-commit检查,但也没有好处.
我正在对一个分支机构中的项目进行更改,到目前为止,除了我之外,其他人都不知道.但是,从最近开始,当我git push
参与这个项目时,我现在收到这个作为响应的一部分:
remote: Create pull request for <<my branch>>:
remote: https://bitbucket.org/...
Run Code Online (Sandbox Code Playgroud)
我不知道为什么Git会给我这个消息,这是我以前从未见过的.
即使我删除了远程分支(" git push origin :<<my branch>>
"我现在仍然收到此消息!(我成功删除了远程分支,但消息仍然存在)
git ×10
githooks ×10
git-push ×2
github ×2
bitbucket ×1
github-api ×1
linux ×1
node.js ×1
pre-commit ×1
push ×1