问题标签 [git-alias]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
946 浏览

git - git克隆所有分支bash脚本作为git别名

我想创建一个克隆所有分支的git 别名

我们有了 bash 脚本,感谢这篇文章: 如何在 Git 中克隆所有远程分支?

这是 bash 脚本(多行版本):

(一行版本):

让我们调用 git 别名git cloneallbranches

我尝试使用以下方法设置单行和多行版本:

$ git config --global alias.cloneallbranches '...'

并尝试将两个版本都粘贴到我的 .gitconfig 文件中,但均未成功(我还有其他 git 别名,但没有一个是 bash 脚本)。

有人可以帮我修改一个 bash 脚本,以便我可以将它粘贴到我的 .gitconfig 文件中,以使 git 别名正常工作吗?

谢谢你。


回答:

在下面的回复中运行一个单独的 bash 脚本作为“git 别名”答案。

但是,对于那些想要快速添加 git 别名的人,$ git clone-all-branches这里有一个答案:

创建一个“git alias”,它将运行一个脚本:

$ git config --global alias.clone-all-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'

现在你可以运行(从任何有 git repo 的目录):

$ git clone-all-branches

0 投票
1 回答
539 浏览

git - Git别名:如何将当前目录传递给shell命令?

我在 Windows 下使用 git bash,我想做一个 git 别名命令,它在概念上是这样的:

Where$dir扩展到执行的 bash shell 中的当前工作目录git assume_unchanged_below

即,如果我进入C:\somedir\somesubdir并执行,git assume_unchanged_below我希望它就像我输入的一样git ls-files -z C:\somedir\somesubdir | xargs -0 git update-index --assume-unchanged

似乎可以通过git rev-parse --show-prefix. 我也知道可以使用匿名函数传递参数,但是我无法将这两个概念结合起来以获得我想要的行为。

例如,如果我这样做:

然后我可以输入

并且它的行为符合预期($1正确扩展到当前工作目录)。

但是,我不想手动传递git rev-parse --show-prefix给别名,我希望它自动推断,这样我只需要输入

让它在当前工作目录上运行。

我试过这个

但这不能正常工作;$1里面是f()空的。这大概是因为正在执行的新 shell 进程f()将存储库根目录作为其当前目录。

甚至可以在 git 别名中做我想做的事情,还是我需要在我的 .bashrc 中创建一个别名来完成这个?

-------------------- 更新答案--------

@vampire 使用 $GIT_PREFIX 的建议奏效了,因为 $GIT_PREFIX 从触发原始别名的 git shell 继承其值。

这是一个工作示例,带有可用性装饰:

0 投票
1 回答
3015 浏览

git - git commit --amend 很危险

git commit -amend我有时会在我真的想打字时不小心打字git commit --amend。Git 检测到并询问我

这很棒。

但是,有时我写git commit -ammend了然后 git 会接受它并将我的拼写错误视为git -a -m "mend",所以它只是使用日志消息“mend”提交。

我正在寻找一种方法来阻止 git 这样做。我试图定义一个别名,git commit -ammend但现在失败了。你对如何处理这个问题有什么建议吗?

0 投票
4 回答
1435 浏览

git - git别名:多个命令,可变参数

我经常发现自己在打字:

我更喜欢一个别名,我可以在其中输入:

注意:我知道我可以使用多个 url 创建一个新的远程“all”。让我们在这里不讨论这个,而是关注别名!

我可以硬编码远程名称,因为我有许多具有相同多个远程名称的项目(通常是“drupal”和“github”)。

迄今为止的进展

我已经想出了一个非可变版本:

这里有两个技巧

  • 使用双引号来防止';' .ini在文件中具有特殊含义
  • #忽略该行的其余部分。

但这一次只会推送一个分支(或标签)。所以我必须输入这个:

我更喜欢一个别名,我可以在其中输入:

为什么不使用具有多个推送 url 的新远程“全部”?

如前所述,让我们关注别名,以便读者找到他们正在寻找的东西。

无论如何,这就是我不创建远程“全部”的原因:

  • 每个项目我都必须这样做一次,并且不能在全球范围内这样做。就我而言,在全局别名中硬编码远程名称实际上很好!
  • Afaik,我会用“all/branch1”之类的引用来污染我的历史,而不是“remote1/branch1”和“remote2/branch1”。

讨论这个问题的正确地方是这里,从多个远程位置拉/推

也可以看看

以下是相关的,但它们不涉及可变参数:

以下内容可能会有所帮助,但它针对的是纯 shell 脚本,而不是专门的 git 别名:

0 投票
3 回答
146 浏览

git - 有没有办法为 git 选项创建快捷方式或别名

我发现自己经常使用--name-statusoption 和git log, git diff, git show。我知道 git 别名,但它们仅适用于命令或命令和/或选项的组合。我不想只为这个选项创建 git 别名。

--ns所以我可以在快捷方式的地方做这样的事情--name-status


更新:请参阅我自己的答案以了解不同的考虑。

0 投票
1 回答
348 浏览

git - 函数中的Git别名输出着色

我正在尝试添加一个复杂的 git 别名,它将在执行命令时回显消息。我想为一些消息着色(红色表示错误等)。

但是,当我执行别名时出现错误:

在终端中运行相同的命令echo "\033[31mHello\033[0m World"可以很好地着色。

0 投票
2 回答
2293 浏览

git - 设置使用 TR 将反斜杠转换为正斜杠的 Git 别名

我正在尝试设置一个Git别名,该别名必须将反斜杠转换为正斜杠,以便稍后将其传递给filter-branch命令(因为我使用Posh并将DOS基于文件路径作为参数传递,所以需要)。

所以我有这个别名:

但我得到这个错误:

tr:警告:字符串末尾的未转义反斜杠不可移植

我试着tr '\\\\' '/'在里面写,认为它Git只是逃避\bash得到一个\,但我得到了同样的错误。

有任何想法吗?

0 投票
2 回答
329 浏览

git - 无法为第一次提交创建 git 别名

我一直在努力尝试在我的.gitconfig

但是,我得到以下异常:

我一直在尝试该命令的几个替代版本,但无法正确使用。我想在.gitconfig文件中手动创建它,而不是通过在终端中提供命令(即git config --global)。

有没有人知道这个可能出了什么问题?我在 unix/terminal 中的婴儿步骤:-)

编辑 我希望能够使用别名获得与从终端运行命令时相同的结果。也就是说,作者、SHA、日期、提交消息,而不仅仅是 SHA。

0 投票
1 回答
130 浏览

git - 管道命令时 git bad config

这两个命令都从命令行工作

在 [alias] 下添加到 gitconfig 时

我知道fatal: bad config line 16 in file /Users/<me>/.gitconfig这是第二行。由于这个答案,我最初的问题是让当前分支成为别名。所以我主要是好奇为什么两者都在命令行上工作,但只有 1 可以在配置中工作。我猜这是' '需要逃避的,但这只是一个猜测。

0 投票
1 回答
1250 浏览

git - 在 git-alias 中引用自己的用户名

我想列出“自我上次提交以来”的所有提交。

现在我使用这个日志别名变体:

一般来说,这很好用——但我想实际引用我在 .gitconfig 中声明的用户名,而不是对其进行硬编码。

是否可以访问该值?(例如$(GITCONFIG:User:Name):)

以防万一:$(whoami)不起作用,因为用户名不匹配。