获取当前分支名的git命令,获取拉取请求的git命令,以及模拟拉取的git命令,都属于git别名相关话题

我是Git Advent Calendar第11天的负责人@sonots。

我来介绍一个有趣的Git别名。

当前分支

要通过命令获取git的当前分支,可以这样做。

$ git rev-parse --abbrev-ref HEAD

在~/.gitconfig文件的[alias]部分下

  current-branch = rev-parse --abbrev-ref HEAD

并且添加了注释,我使用了git current-branch命令来操作。

呷呷拉

这是一个模仿oh-my-zsh的git插件的别名,用于从远程的current-branch拉取代码。请将其添加到.zshrc或.bashrc文件中作为shell的别名。

alias ggpull='git pull --rebase origin $(git current-branch)'

就顺便提一下,我通常会将原始仓库命名为 upstream,这样我也可以使用 gupull 进行拉取。

alias gupull='git pull --rebase upstream $(git current-branch)'

拉取并合并(fetch-pulls)

这样做,您就可以在本地获取到 GitHub 的拉取请求。

$ git fetch origin '+refs/pull/*:refs/remotes/pr/*'

因此,在 ~/.gitconfig 文件的 [alias] 部分下

  fetch-pulls = fetch origin +refs/pull/*:refs/remotes/pull/*

我会在前面加上说明,并且使用”git fetch-pulls”进行实际操作。

当收到一个 pull request 时,在将其分支拉到本地并运行实际操作时,我会使用它。

查看并模拟执行git pull命令

如果在执行git pull之前检查更改的方法,在内部IRC上有一个解决方案。可以像这样做。

$ git fetch origin; B=$(git rev-parse --abbrev-ref HEAD); git diff --stat --summary ${B}..origin/${B}
 CHANGELOG.md                       | 6 ++++++
 README.md                          | 8 ++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

就是说,在 ~/.gitconfig 中的 [alias] 下方会有

  pull-dry-run  = !"git fetch origin; B=$(git rev-parse --abbrev-ref HEAD); git diff --stat --summary ${B}..origin/${B}"

我会将其撰写并使用 `git pull-dry-run` 这样的命令来验证。

哎,这个已经写在备忘录里了…嗯,就说我把它别名化了吧…

最后

如果有更多改进或别名的点子,欢迎提出!

bannerAds