标签: git

这个 git 别名是如何工作的?

通常,git 别名仅限于单个命令:

git config --global alias.ci commit
Run Code Online (Sandbox Code Playgroud)

所以,而不是git commit你可以做git ci

但似乎您也可以在其中插入一个函数:

git config --global alias.up-sub '!f() { cd $1 && git checkout master && git pull && git submodule update --init --recursive; }; f'
Run Code Online (Sandbox Code Playgroud)

这允许您调用 git up-sub some-submodule

问题是:它是如何工作的?我还没有!f()在任何其他上下文中看到语法。

bash git

7
推荐指数
1
解决办法
1300
查看次数

如何恢复损坏/部分删除的 git 存储库

我不小心rm -r在我的 .git 目录上运行了一个。幸运的是,rm当它到达一个写保护的文件时停止了,但我仍然在我的 .git 中丢失了一些东西。

我还有的文件:

FETCH_HEAD
ORIG_HEAD
config
gitk.cache
logs/
objects/
Run Code Online (Sandbox Code Playgroud)

我丢失的文件:

HEAD
description
hooks/
index
info/
packed-refs
refs/
Run Code Online (Sandbox Code Playgroud)

据我所知,我失去的唯一无法重新克隆的东西是我的暂存区和我的裁判的变化。我准备失去我的暂存更改,但我真的需要恢复我的 HEAD 和我的分支。有没有办法做到这一点?比如说,通过查找没有子项的提交,检查它们以查看它们是什么并为它们创建分支?目前 git 甚至不再将我的存储库识别为存储库。

git data-recovery

7
推荐指数
1
解决办法
9548
查看次数

获取 diff(或 git diff)以正确显示插入的大块头

假设我有两个文件。第一个有内容:

line 1
foo
line 2

line 1
bar
line 2
Run Code Online (Sandbox Code Playgroud)

第二个在中间插入了一个新部分,所以它看起来像这样:

line 1
foo
line 2

line 1
new text
line 2

line 1
bar
line 2
Run Code Online (Sandbox Code Playgroud)

现在,当我执行“diff -u”时,我得到如下输出:

--- file1   2013-06-25 16:27:43.170231844 -0500
+++ file2   2013-06-25 16:27:59.218757056 -0500
@@ -1,7 +1,11 @@
line 1
foo
line 2

line 1
+new text
+line 2
+
+line 1
bar
line 2
Run Code Online (Sandbox Code Playgroud)

这并没有正确反映插入了中间节——相反,它看起来像是第二节被更改了,并且在末尾添加了一个新节(这是因为算法从第一个不同的行开始)。

有没有办法让 diff(单独使用,或者使用 git diff)来显示这个输出?

--- file1   2013-06-25 16:27:43.170231844 -0500
+++ file2   2013-06-25 16:27:59.218757056 -0500
@@ -1,7 +1,11 @@ …
Run Code Online (Sandbox Code Playgroud)

diff git

7
推荐指数
1
解决办法
1168
查看次数

从本地 Git 存储库复制单个文件

我需要将本地存储库中的单个文件复制到我的机器上,git-pull或者git-fetch,我该怎么做?

是否可以通过 hash 获得它?比如a3ea2118bf1c5e2c6aa0974d0b6ff7415bd044ef

git

7
推荐指数
1
解决办法
8084
查看次数

Installing Git, Curl, and Expat from Source

I have a RHEL 6.4 VM provisioned by my company's internal KVM.

We are having some trouble using yum (Cannot retrieve repository metadata, which I've confirmed in this case is peculiar to my company's internal cloud), so I have to build Git from source.

Downloading the RPM file and issuing

sudo yum localinstall ....rpm
Run Code Online (Sandbox Code Playgroud)

Gives me the same Cannot retrieve repository metadata error.

Issuing

sudo rpm -ivh ....rpm
Run Code Online (Sandbox Code Playgroud)

Fails with an error: Failed dependencies and then lists all …

source rhel git

7
推荐指数
1
解决办法
1万
查看次数

git revert --quit 有什么用?

git-revert(1)联机帮助页中,我不清楚命令的quitabort选项之间的确切区别revert是什么。

从我对revert命令的练习中,我观察到该abort选项的工作方式与rebase命令之一非常相似,因为它试图重建当前分支的预操作状态。

此外,该quit选项的实际用例是什么?

git

7
推荐指数
1
解决办法
4295
查看次数

是否可以将用户的 crontab 存储在 OpenBSD 上用户的 git 存储库中?

在OpenBSD和与OpenBSD的croncrontab,是它可以存储crontab(5)用户在git同一用户的信息库?

完成这样的事情的正确方法是什么?

(为了将答案引向正确的方向,我不反对更改系统中的某些权限,尽管我不想重新编译二进制文件,也不想违反任何良好的安全范例。)

cron git version-control openbsd

7
推荐指数
2
解决办法
4150
查看次数

将 Git 用户的 ssh 转发到 Git 服务器

很难找到有关这个简单问题的信息。

像许多人一样,我们在远程实例上运行 gitlabs/gogs 服务器。目前它侦听端口 10022。我们还在该实例上运行 ssh 来管理服务器。它侦听端口 22。

我们希望 ssh 服务器侦听端口 22,以便将 Git@ ONLY 的连接转发到 10022 上的 Git 服务器。

这样当人们在本地使用 Git 时,他们就不必每次都手动指定我们远程 Git 服务器的端口。

我们应该怎么做?

ssh git openssh sshd gitlab

7
推荐指数
1
解决办法
1674
查看次数

如何获取 git commit hash id 的前 5 个字符并将其存储在 bash 中的变量中?

${$(git rev-parse HEAD):0:5}
bash: ${$(git rev-parse HEAD):0:5}: bad substitution
Run Code Online (Sandbox Code Playgroud)

git rev-parse HEAD 返回哈希 ID,但如何从中生成子字符串?

如果我把它分成两行,它就起作用了。

x=$(git rev-parse HEAD)
echo ${x:0:5}
Run Code Online (Sandbox Code Playgroud)

但是我如何在一行中做到这一点?

bash git

7
推荐指数
1
解决办法
7400
查看次数

Bash Alias 中的 if-then-else

我正在尝试为其创建别名,mv以便它在普通文件夹中执行其正常行为,并由git mv内部 git 存储库替换。我尝试了很多方法。if 语句有效,只有命令git mv无法正确运行。

alias mv='"$(
if [ x`git rev-parse --show-toplevel 2> /dev/null` = x ]; 
    echo mv;  
else 
    echo "git mv"; 
fi)"'
Run Code Online (Sandbox Code Playgroud)

bash git alias

7
推荐指数
1
解决办法
7571
查看次数

标签 统计

git ×10

bash ×3

alias ×1

cron ×1

data-recovery ×1

diff ×1

gitlab ×1

openbsd ×1

openssh ×1

rhel ×1

source ×1

ssh ×1

sshd ×1

version-control ×1