标签: git

通过“~”表达式将“git remote add”添加到主目录

我在我的主目录中创建了 git bare 存储库,例如~/git-repos/foo.git. 要添加远程存储库,我输入了类似的内容git remote add origin ssh://username@hostname:10022~/git-repo/foo.git

但它因错误而失败ssh: Could not resolve hostname hostname:10022~: Name or service not known

如果我替换~/home/username,那么它工作正常。

有没有办法在 ssh 协议中使用~表达式git remote

ssh git home

3
推荐指数
1
解决办法
1428
查看次数

列出标记版本之间添加和删除的文件

给定 Git 存储库中的两个标记版本,是否可以列出添加或删除的文件?

例如,假设标记的版本 1.0 有许多头文件和实现文件。进一步假设foo.h被删除并被bar.h添加;然后该集合随后被标记为 2.0。如何让 Git 告诉我foo.h已从 1.0 删除并bar.h添加到 2.0?


编辑:我只需要检查连续的标签。即我只需要检查1.0/2.0之间;2.0/3.0;等等。我不需要跨越多个标签。

我想要执行检查的原因是我们注意到发行版并不总是为其 [DEB|RPM] 构建系统拾取新文件。所以我想给发行版一个关于新文件的“提醒”。

我们目前没有文件列表,因为我找不到它的规范参考。引用的问题涉及文件列表的约定;但它已被社区关闭并删除。

git

3
推荐指数
1
解决办法
771
查看次数

如何为 OpenBSD 启用 pkg_add

我安装并运行 OpenBSD,我想安装 git,但没有 OpenBSD 的存储库。如果我想用 pkg_add 安装一些程序怎么办?

git openbsd package-management

3
推荐指数
1
解决办法
8982
查看次数

sudoing ssh 的问题 - `sudo ssh ...` 失败

我正在尝试使用 git salt ssh 访问(使用 root 运行)。错误总是:

权限被拒绝(公钥)。

我设法重现了这个问题,模拟了 salt 可能在做什么,通过在root用户上运行 ssh 命令,然后使用sudo(仍然在 root 帐户上)运行相同的命令,得到相同的错误。

这成功了:

root@server:/src# ssh -T git@bitbucket.org

以 XXXX 身份登录。

这失败了:

root@server:/src# sudo ssh -T git@bitbucket.org

权限被拒绝(公钥)。

权限显然是正确的:

ls -la ~/.ssh
total 32
drwx------  2 root root 4096 Jun  2 12:18 .
drwx------ 12 root root 4096 Jun  2 12:10 ..
-rw-------  1 root root  550 Jun  1 16:31 authorized_keys
-r--------  1 root root   83 Jun  2 12:18 config
-rw-------  1 …
Run Code Online (Sandbox Code Playgroud)

ssh sudo git key-authentication

3
推荐指数
1
解决办法
5934
查看次数

创建有意义的 etckeeper 提交消息

我想/etcetckeeper跟踪变化

不幸的是,所有提交的提交消息都是相同的

saving uncommitted changes in /etc prior to emerge run
Run Code Online (Sandbox Code Playgroud)

我希望有一些更具描述性的东西,比如

apt-get install foo
Run Code Online (Sandbox Code Playgroud)

在基于 debian 的系统上或

emerge foo
Run Code Online (Sandbox Code Playgroud)

在基于 gentoo 的系统上使用git log. 有没有钩子脚本,我可以用这个吗?

logs gentoo debian git etckeeper

3
推荐指数
1
解决办法
426
查看次数

显示旧/过时条目的 git 分支的选项卡完成

我正处于一种弗兰肯德式的延伸/sid(这不是最好的主意,我知道;计划很快重新安装)。

Tab 补全适用于 git repo 目录中的 git 分支名称:

:~/project $ git checkout <TAB><TAB>
Display all 200 possibilities? (y or n)

:~/project $ git checkout private-rl_<TAB><TAB>
private-rl_1219_misspelled_locale_zhtw   private-rl_1950_scheduler_offset         private-rl_bootstrap_rake_tasks
private-rl_1854_ldap_filter_reset        private-rl_bootstrap_rake_task
Run Code Online (Sandbox Code Playgroud)

但是它显示的一些分支不再存在:

:~/project $ git branch
* develop
  private-rl_1219_misspelled_locale_zhtw
  stable
Run Code Online (Sandbox Code Playgroud)

删除的远程分支也会发生这种情况。

这里发生了什么?git 完成脚本是否保留了可以以某种方式刷新的旧分支的缓存?如何阻止这些分支在我的选项卡完成结果中累积?

git autocomplete

3
推荐指数
1
解决办法
1067
查看次数

使用“diff-highlight”进行差异

我已经将diff-highlight设置为 git 的分页器/荧光笔。

[pager]
    log = diff-highlight | less
    show = diff-highlight | less
    diff = diff-highlight | less
Run Code Online (Sandbox Code Playgroud)

效果很好。

但是如何将 diff-highlight 用于普通 diff 呢?

diff git

3
推荐指数
1
解决办法
2189
查看次数

比较退出代码:预期的一元运算符

我在一个.txt文件中有一个 git 提交列表,我想遍历这些提交。对于每个COMMIT_ID我想使用git退出代码为0or的命令检查它们1

根据我想要的结果echo truefalse.

但是在运行脚本时,我收到此错误:

line 5: [: 0: unary operator expected
Run Code Online (Sandbox Code Playgroud)

脚本如下:

#!/usr/bin/env bash
input="./commits.txt"
while IFS= read -r COMMIT_ID
do
  if [ 0 -eq $(git merge-base --is-ancestor $COMMIT_ID HEAD) ]; 
    then 
      echo "true"; 
    else 
      echo "false"; 
    fi
done < "$input"
Run Code Online (Sandbox Code Playgroud)

bash git shell-script test exit-status

3
推荐指数
1
解决办法
293
查看次数

如何在 shell (/bin/sh) 中进行 if not 语句?

我正在使用 shell 编写一个 git hook 文件,以在提交之前检查我的提交消息。我是一个完全的初学者,这是我尝试过的:

我的commit-msg钩子文件如下所示:

#!/bin/sh
msg=`head -n 1 $1`


if echo $msg | egrep -qv '(Android-\d{3,4}.{20,})'; then
  echo "[Message Format] Your message is not formatted correctly. Correct message format\n 
    #Ticket Number - Minimum 20 or more Character \n 
    like #Android-123 Bug fixed for login issue"
  exit 1;
fi
Run Code Online (Sandbox Code Playgroud)

因此,每当我发出这样的提交消息时:

git commit -m " #Android-123 I pretty sure this is more than 20 character,but it still failed to commit"
Run Code Online (Sandbox Code Playgroud)

所以我很确定我的提交信息超过 20 个字符,还有票号,但每次我提交它仍然得到我设置的错误。

我认为我的逻辑问题是我应该使用if not echo …

shell git

3
推荐指数
1
解决办法
659
查看次数

我怎样才能使这个带有引号的 git 别名起作用?

我想创建一个 git diff 别名,只显示更改的行(彩色)。

[alias]
    mdiff = diff --color | grep --color=never $'^\e\[3[12]m'
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为显然管道不能在 git 别名中使用,但这个答案显示了一种解决方法

[alias]
    mdiff = ! git diff --color | grep --color=never $'^\e\[3[12]m'
Run Code Online (Sandbox Code Playgroud)

但是,这也不起作用,我仍然收到此错误:fatal: bad config line 17 in file /home/me/.config/git/config

该答案下的评论表明问题是由于引号造成的。

git alias

3
推荐指数
1
解决办法
2084
查看次数