Articles of git

Gitlab的自定义钩子没有运行

我们将Gitlab安装在与我们testing项目的dev / staging副本相同的服务器上。 我们两个人都有Gitlab的本地工作副本作为一个远程,并能够推/拉成功的Gitlab。 我们还将Gitlab设置为项目的临时副本中的远程设备,并且从Gitlab中手动启动。 然而,当为Gitlab创build一个自定义的钩子(如这里所描述的)时,钩子根本无法正常运行。 钩的内容是: #!/bin/bash echo "Inside post_receive hook" cd /path/to/staging/copy git pull gitlab master … /path/to/staging/copy是项目的暂存位置。 这是钩子的所有权和权限: -rwxr-xr-x. 1 git git 114 Mar 30 10:28 post_receive 当从我的工作副本推送到Gitlab,这个钩子应该运行,但它没有 – 分段副本不更新,回声消息不显示,推送结果消息不显示任何错误。 我已经尝试了一些关于设置/取消设置环境variables的答案,他们没有帮助。 我没有想法。 有谁知道为什么自定义挂钩不运行?

如何设置git仓库的根目录到vi / vim查找path?

我想设置vim文件searchpath来包含git仓库根(可以通过git rev-parse –show-toplevel )。 我不知道如何将这个git命令的输出附加到.vimrc中的“ set path=.,,** ”。 谢谢!

在shell脚本中使用Git Pull命令而不必手动input密码?

我需要一种避免在构build脚本中执行git pull命令时手动input密码的方法。 我已经尝试过ssh keygen方法和git证书caching方法,但是两者都不适合我。 那么有没有什么办法将密码存储在shell脚本的某处,所以密码提示只是使用存储的密码,而不是等待我明确地input密码,然后按回车。 多谢你们。

git:在任何客户端推送后,在服务器上自动运行bash脚本

我看过并find各种各样的git钩指南,但似乎没有适合这个特定的,简单的情况。 我有我自己的服务器,我推动代码更改(与git推起源大师)。 我这样做后,我必须ssh进入服务器,并运行我已经设置的function,“更新代码”,克隆回购,运行ant,重新启动tomcat等我想git运行这个“更新 – 代码“命令后,任何用户运行(git push)(从他们的机器,而不是服务器)。 回顾一下,在任何用户(从他们的机器上)推入我的repo之后,shell命令将自动在服务器上执行,就像我login并键入“update-code”一样。 有什么确切的步骤让git做到这一点?

Visual Studio代码不能在Linux上cachinggit密码

Visual Studio Code(最新版本)不会在Linux上cachinggit密码,并popup一个烦人的警告窗口(阻止整个UI)。 我试过这个命令失败了: git config –global credential.helper cache 使用Ubuntu 15.10。

我可以得到.bbappend文件的path吗?

我有一个.bbappend文件在一个自定义Yocto项目层(和单独的回购)。 我想在这个.bbappend修改的文件中放置关于我的自定义层的信息(例如git stuff for my custom repo / layer)。 从这个.bbappend运行的任何命令都可以像附加到的.bb文件一样运行( 根据build议 , .bb位于另一个图层和回购站中 )。 我认为可能会有一些希望运行VAR := "stuff ${OTHER_VAR} more" , 一些文档说是“即时variables扩展”,这是“parsing这条线时扩展”。 不幸的是,它看起来像追加发生在parsing之前。 我喜欢.bbappend的划分方面,但还没有find一种方式来引用.bbappend本身,或者如果有其他方式来从原始图层获取git信息。 有什么想法吗?

如何在“git-rebase -i”之后自动编辑提交?

我经常需要更改n个以前提交的date。 通常我做git rebase -i @~20 commit –amend ,然后在编辑器中手动改变pick来edit ,然后在循环commit –amend中运行,并在期望的date之后运行。 这一切都很好,但我想自动化的过程,所以编辑器将不会被调用。 问题是:如何在git rebase之后自动切换到“ 编辑模式”?

在perl中执行SSH内的第二个SSH

我必须使用Net :: SSH :: Perl在远程机器上执行SSH,即在下面的代码中传递给$ ssh-> cmd的'cmd'是另一个SSH(例如username @ hostname)。 有没有一种方法来传递第二个SSH的密码,然后在第二个远程机器上执行命令。 另外,我不能使用ssh密钥对login或sshpass之类的工具。 有人可以帮忙吗? use Net::SSH::Perl; my $hostname = "hostname"; my $username = "username"; my $password = "password"; my $cmd = <command to be executed on remote machine>; my $ssh = Net::SSH::Perl->new("$hostname", debug=>0); $ssh->login("$username","$password"); my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd"); print $stdout;

如何使用git在openBSD上设置自动完成?

我想在ksh和openBSD 5.8 / 5.9中为git命令设置自动完成。 不知何故,它以前安装,突然消失,所以我必须键入或复制和粘贴大量的文字。 它应该像在OSX或Ubuntu中一样工作,在那里键入git merge X…并按下“tab”键,以便在terminal中完成分支名称的其余部分。

如何查找terminal中执行哪个实际的命令

我有一个名为gb (转换替代构build命令)的命令位于$ {HOME} / App / bin,并在'PATH'中。 当我检查它时: which gb 它返回正确的位置${HOME}/App/bin/gb 我也检查别名 alias | grep gb 它什么都不返回。 但是当我从terminal运行gb命令 $ gb 它总是返回git branch命令的结果。 只是想知道怎么才能找出导致gb命令劫持的原因?