我在我的主目录中创建了 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?
给定 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] 构建系统拾取新文件。所以我想给发行版一个关于新文件的“提醒”。
我们目前没有文件列表,因为我找不到它的规范参考。引用的问题涉及文件列表的约定;但它已被社区关闭并删除。
我安装并运行 OpenBSD,我想安装 git,但没有 OpenBSD 的存储库。如果我想用 pkg_add 安装一些程序怎么办?
我正在尝试使用 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) 我想/etc用etckeeper跟踪变化
不幸的是,所有提交的提交消息都是相同的
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. 有没有钩子脚本,我可以用这个吗?
我正处于一种弗兰肯德式的延伸/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 完成脚本是否保留了可以以某种方式刷新的旧分支的缓存?如何阻止这些分支在我的选项卡完成结果中累积?
我已经将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 呢?
我在一个.txt文件中有一个 git 提交列表,我想遍历这些提交。对于每个COMMIT_ID我想使用git退出代码为0or的命令检查它们1。
根据我想要的结果echo true或false.
但是在运行脚本时,我收到此错误:
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) 我正在使用 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 …
我想创建一个 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
该答案下的评论表明问题是由于引号造成的。