标签: git

从 shell 启动脚本运行 git pull

我有 Raspberry Pi,它在启动时加载 shell 脚本。

该脚本运行一个 python 脚本,boot_camera.py该脚本可在存储库中找到。

我有一个服务器,它向 Raspberry Pi 发送命令以发出命令git pullboot_camera.py在启动时加载git pull 命令时会失败。

但是,当我在使用 ssh 连接后手动加载“boot_camera.py”脚本时,git pull命令成功执行。

起初我认为问题在于必须使用“sudo”权限来运行命令,所以我使用了这个解决方案来解决问题:

>>>不使用sudo的解决办法<<<

但是当脚本在启动时启动时,该pull命令仍然失败。

更新:这是设置启动脚本的脚本:

sudo cp bootCameraModule.sh /etc/init.d/
sudo update-rc.d bootCameraModule.sh defaults
Run Code Online (Sandbox Code Playgroud)

这是脚本本身:

case "$1" in
start)
    echo "Starting camera"
    . /home/pi/.virtualenvs/env/bin/activate
    # run application
    cd /home/pi/rpi-repo/rpi/
    python boot_camera.py &
 ;;
stop)
    echo "Stopping camera"
    # kill application
    sudo killall camera
;;
*)
    echo "Usage: /etc/init.d/bootCameraModule {start|stop}"
    exit 1
;;
esac …
Run Code Online (Sandbox Code Playgroud)

shell permissions git python

5
推荐指数
1
解决办法
3318
查看次数

当日志按 tig 中的文件过滤时如何查看整个提交

如果使用日志调用tig将显示影响该文件的所有提交。tig log some/file.txt在一行上按 Enter 键commit d5dd1d658e5d79701fb9d028479a0fcb26a033fa将打开 diff 视图,显示该提交中的更改some/file.txt,但仅显示对该文件的更改:

带有 diff 的 tig 日志视图的屏幕截图

我希望能够查看提交的全部内容,不按文件名过滤。即切换到与运行以下命令生成的视图相同的视图tig show d5dd1d658e5d79701fb9d028479a0fcb26a033fa

tig diff 视图的屏幕截图

我已经尝试了所有视图并阅读了手册,但还没有找到方法。是否可以?

git

5
推荐指数
1
解决办法
704
查看次数

Tar - 转换标准输入而不解压

我正在尝试转换来自标准输入的 tar 文件的路径,而不必先提取 tar。

这是这个问题的明显重复,我正在寻找一种无需提取即可完成的解决方案,以简化我的脚本,所以我不关心性能是否与提取相同。

使用案例:

我正在从 git 存档创建一个 tar,并将结果通过管道传输到一个 ssh 进程,该进程将在另一台没有 tar --transform 选项的机器上运行。因此,我需要在将其发送到 ssh 之前进行转换。我总是可以提取到临时目录,然后使用转换重新创建另一个 tar,但我正在寻找一种单行解决方案来临时弹出到现有脚本中。

tar git

5
推荐指数
0
解决办法
313
查看次数

在 PKGBUILD 中指定子模块修订版

我正在尝试hhvm-git从 AUR 安装软件包并收到错误。子模块之一存在错误。这个错误已经被修复,我想指定修订版包含子模块的修复。我怎样才能做到这一点?

在 PKGBUILD 中,我尝试按照Arch Wiki中的建议指定修订版(source数组中的行):

"git+https://github.com/facebook/proxygen#7e37f926d922b55c85537057b57188dea9694c32"
Run Code Online (Sandbox Code Playgroud)

结果:

  -> Creating working copy of proxygen git repo...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From /tmp/yaourt-tmp-german/aur-hhvm-git/proxygen
   7e2a49c..3395064  master     -> origin/master
==> ERROR: Unrecognized reference: 7e37f926d922b55c85537057b57188dea9694c32
Run Code Online (Sandbox Code Playgroud)

arch-linux git makepkg hhvm

5
推荐指数
1
解决办法
1200
查看次数

更改目录非常慢

有时更改目录(通过终端)会启动git进程,该进程会占用100%的 CPU 时间,并且长达 5-6 秒,在此期间我的控制台完全没有响应。

\n\n

当我导航到该目录时,并非每次都会发生这种情况,但一天中会发生几次。

\n\n

5-7秒后,git进程消失,我进入目录

\n\n

有任何想法吗?

\n\n

我的~.zshrc这里

\n\n
\xe2\x9e\x9c  Config git:(develop) uname -a         \nLinux dmitry 4.13.4-200.fc26.x86_64 #1 SMP Thu Sep 28 20:46:39 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux\n\xe2\x9e\x9c  Config git:(develop) zsh --version    \nzsh 5.3.1 (x86_64-redhat-linux-gnu)\n\xe2\x9e\x9c  Config git:(develop) \n\xe2\x9e\x9c  Config git:(develop) bash --version\nGNU bash, version 4.4.12(1)-release (x86_64-redhat-linux-gnu)\n
Run Code Online (Sandbox Code Playgroud)\n

performance fedora zsh git cd-command

5
推荐指数
1
解决办法
3171
查看次数

Git 在使用 SSH URL 时要求输入密码,而 ssh 则不会

我有三台服务器(两台 ubuntu 16.04,一台 mac mini)和几台 macbook。

一台服务器 ubuntu 用于 gitlab,另一台是内部站点服务器。mac mini 正在运行 CI。

最近 gitlab 服务器被替换为另一个 gitlab 服务器。(更换硬件、相同的 IP 地址和主机名、新软件、新 ssh 密钥、所有其他硬件(其他服务器和笔记本电脑)都像以前一样使用 ssh 密钥)。

任何 macbook 都可以通过 SSH 连接到任一服务器(使用服务器上用户的用户名/密码),并且可以使用 Git 通过公钥通过 git 服务器进行克隆、推送等。

站点服务器可以通过 SSH(通过公钥)连接到 git 服务器,但一旦出现欢迎消息,连接就会终止。站点服务器无法通过公钥使用 git,因为 Git 会提示输入密码,除非它不使用并且使用持续一段时间的公钥工作,否则只有在用户文档目录中使用测试时才开始工作,如果我再次尝试在/var/www目录 git Breaks 中克隆(这可能是巧合,它只工作了两次)。

CI 与 git 服务器的连接没有问题。

使用 ssh -v 输出显示 ssh 使用正确的公钥。

因此在站点服务器上运行以下命令

ssh git@10.10.10.10 
Run Code Online (Sandbox Code Playgroud)

连接(然后断开)但是

git clone git@10.10.10.10:somerepo.git
Run Code Online (Sandbox Code Playgroud)

询问 git 用户的密码。

站点服务器有一个在 gitlab 上注册的用户(带有 ssh 密钥)。

多次调用的示例输出:https://pastebin.com/QH0AntK7

ssh git

5
推荐指数
1
解决办法
6401
查看次数

如何在 CentOS 7.4 上正确从源代码安装 Git 2.17.1?

我想在 CentOS 7.4 上安装最新的可用 git (git-2.17.1),因为一些应用程序对此有抱怨,而且不仅仅是这样。

我正在尝试在CentOS 7.4上从源代码安装git-2.17.1

这些是我尝试过的方法:

  • 使用以下命令(仅)卸载旧的 git:

A)rpm -e --nodeps git

  • git-2.17.1.zip下载并解压文件/home/myusername/temp/

  • 在本例中更改为提取文件的目录/home/myusername/temp/git-2.17.1/

  • 作为超级用户,使用以下命令安装了所有可能需要的依赖项:

a) yum install docbook2X-0.8.8-17.el7.x86_64.rpm(下载此软件包后)

b)yum install dh-autoreconf curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel asciidoc xmlto gengetopt autoconf libcurl-devel gcc kernel-headers debhelper intltool perl-Git po-debconf

  • 按照 git-scm 网站上的说明创建了符号链接,使用:

A) ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

  • 作为普通用户,运行以下命令:

  • ./configure CFLAGS='-I/usr/local/openssl/include' LDFLAGS='-L/usr/local/openssl/lib' --prefix=/usr/local/git --with-openssl=/usr/local/bin/openssl

  • make all doc info

  • 再次,作为超级用户,运行以下命令:

  • make install install-doc install-html install-info

最后一步出现问题,输出如下:

install -m 644 git.info …
Run Code Online (Sandbox Code Playgroud)

source centos git software-installation

5
推荐指数
1
解决办法
1988
查看次数

提交 Git 更改时,如何在第一行末尾以插入模式启动 Vim?

将 Vim 设置为在运行时始终将光标置于第一行末尾的插入模式(以考虑提交消息模板)的最佳方法是什么git commitggA这基本上会做与每次按下相同的事情。理想情况下,这应该是 Vim 配置(大概在~/.vim/after/ftplugin/gitcommit.vim中),因为我依赖$VISUAL而不是单独配置编辑器。


这几乎有效:

call feedkeys('ggA', 'int')
Run Code Online (Sandbox Code Playgroud)

但是,运行时echo 'some text' >/tmp/COMMIT_EDITMSG && vim -Nu NONE --cmd 'filetype plugin on' /tmp/COMMIT_EDITMSG光标位于状态行上,直到我按下某键:

Vim 缺少光标


1 | startinsert!适用于echo 'some text' >/tmp/COMMIT_EDITMSG && vim -Nu NONE --cmd 'filetype plugin on' /tmp/COMMIT_EDITMSG,但运行时git commit -t /tmp/COMMIT_EDITMSG它完全中断 - 未显示提交消息,并且提交模板显示在状态行下方:

<code>git commit</code> 损坏的视图

按向右箭头后,将显示提交消息和光标,并且编辑器处于插入模式,但光标位于第二个字符而不是行尾:

移动光标后的 <code>git commit</code>

我是否需要在配置中添加一些内容来告诉 Vim 显示缓冲区的实际内容?

vim configuration git

5
推荐指数
1
解决办法
922
查看次数

如何将 ~/.zshrc 文件添加到 git 中?

我想.zshrc在我的~/目录中创建文件的备份,并避免对所有其他项目进行版本控制。如何排除所有子目录及其内容?

例如:

cd ~/subdirectory/ && git status
Run Code Online (Sandbox Code Playgroud)

应该输出:

fatal: Not a git repository (or any parent up to mount point /)
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

backup zsh git

5
推荐指数
2
解决办法
1327
查看次数

我如何将 SourceTree 与远程存储库一起使用?

我有一个带有文件夹的服务器。在此文件夹中,我git init在该文件夹中创建了一个 git 存储库。当我现在打开此文件夹中的文件并更改某些内容时,git 会注意到这一点并将其标记为更改。

为了提交并推送这些更改,我当前通过 SSH 登录到我的服务器,导航到该文件夹​​并运行我的 git 命令。因为我不喜欢这个,所以我正在寻找一个 GUI,它的作用类似于 bash SSH logon,并提供 bash 中给出的所有功能。

我已经尝试过 SourceTree 和 GitKranken,但这个工具似乎只能与 Bitbucket 服务器或 Github(无论什么)一起使用,而不能与普通的 git 存储库一起使用。

您知道如何使用 GUI 改进我的工作流程吗?

remote git version-control

5
推荐指数
0
解决办法
1997
查看次数