5 个很棒的 Git CLI 快捷键

2025-06-09

5 个很棒的 Git CLI 快捷键

我想我们现在都对 Git 趋之若鹜了——它是团队协作代码,或者在独自工作时保持内容井然有序、同步和整洁的最佳方式。但是,Git 用户之间仍然存在着巨大的分歧——一些人是 Git CLI 的纯粹主义者,而我们这些喜欢使用 Tower、SourceTree、Github Desktop 或其他(可能)数百种工具的人。

CLI 用户可能会认为在 CLI 上使用 Git 更快更容易,但像我这样的 GUI 用户通常会想:“我脑子没那么多空间,我喜欢按键……” 说实话,我觉得这两种说法都没错。我最近一直在练习 Git CLI 技能,而提高在 CLI 上使用 Git 的好方法是为经常做的事情创建别名,尤其是在需要复杂的 git 命令的时候——所以这里列出了一些我最喜欢的 git 别名,直接来自我的.zshrc

gro

alias gro="git reset --hard @{u}"

在我看来,gro它是“git reset origin”的缩写,但我认为它#{u}的意思upstream tracking branch大概是这个意思。当我只想确保我使用的分支版本与 GitHub 上的版本完全相同时,我会用到它。现在,你可以使用git pull它来将远程更改合并到本地分支,或者如果可以的话,直接快进分支——但我喜欢它gro,因为它会清除我在当前工作树中所做的任何编辑甚至提交,这在我一直在做一些实验但现在准备开始工作时通常很有用。

gpub

alias gpub="git push --set-upstream origin $(git_current_branch)"

每当我在新分支上工作并准备将其推送到 GitHub 时,我只需运行gpubgit publish 命令(“git publish”的简写),它就能处理一些琐碎的事情:告诉我的原始仓库我想要的分支名称(当然,我只想让它保持原样),并设置跟踪,以便我将来可以跟踪git push我的更改。如果你git push在没有跟踪分支的情况下尝试这样做,git 会给出一个错误信息,引导你找到正确的方向,但这gpub确实要容易得多。

gst

alias gst="git status -sb"
alias gsb="gst"
alias gss="gst"

这个方法很简单,gst只是更好一些,git status因为它增加了一个-s选项,可以生成更简洁的输出(更容易阅读),以及一个-b选项,可以在顶部显示当前分支和跟踪分支(例如## dev...origin/dev)。我还为原始别名设置了几个别名,因为有时我会忘记。

“为什么不把gs它当别名用呢?这样方便多了!” 你可能正在问自己这个问题。嗯,那是因为……

gs

alias gs="git stash"

又一个超级简单的方法,但我经常会用到 stash 和 stash popping。额外提示:你仍然可以在别名末尾添加参数和子命令,所以你经常会看到我运行 ,gs push -m "WIP: converting React to Angular"或者只是gs popgs list等等。

老实说,我可能会交换别名gsgst因为我确信我使用的git status比我使用的更多,git stash但困难的部分是让我的手指更新它们的键盘映射。

gcr

gcr(){ git checkout -t origin/"${@}" }

好吧,这不是别名,而是一个基本上像别名一样工作的函数。它是“git checkout remote”的缩写,它允许你在本地检出远程分支并设置跟踪。我经常在从 GitHub 上的 PR 复制分支名称后使用它来运行gcr branch-to-review

我特别懒,所以这里还为 Mac 用户提供了一个额外的别名:

alias gcrc="gcr $(pbpaste)"

这与相同,gcr但它只会使用剪贴板的内容作为分支名称。

Git 提交

我还有不少 git 别名,但那些都比较普通,而且有一半的时间我都忘了用别名,gp尤其是在git pullgit 命令对我来说更直观的时候。我认为为那些比较复杂或深奥的 git 命令设置别名的好处在于,你不必为了使用它而马上记住命令,只需记住别名,就可以which提醒自己它实际上的作用。

$ which gro
>gro: aliased to git reset --hard @{u}

这太有用了。我使用的另一个技巧是将所有 git 别名分组到一个 .gitaliases 文件中,然后将它们导入到我的.zshrc文件中——这样我就可以设置一个别名来列出我所有的 git 别名,有点像个小抄!

# somewhere in .zshrc
if [ -f $HOME/.gitaliases ]; then 
  . $HOME/.gitaliases
  alias gcheat="\cat $HOME/.gitaliases"
fi

Git 合并

你有什么 git 别名,甚至是非 git cli 别名,或者你离不开的函数吗?告诉我!

鏂囩珷鏉ユ簮锛�https://dev.to/jrgould/5-great-git-cli-shortcuts-2leg
PREV
如何使 Vim 成为 Python IDE - 最佳 Python IDE。
NEXT
喂!别再要求一切了:记忆化简易指南