我的个人 Git 技巧备忘单

2025-05-24

我的个人 Git 技巧备忘单

除了 Git 的“基本”命令之外,每个人都有自己常用的 Git 小技巧。我想快速整理一下我自己常用的 Git 小技巧,并将它们添加到我的 .gitignore 中.gitconfig。滚动到底部,查看一些git在 git 之外运行的有趣相关命令!:)

快速修改

我经常忘记提交文件,或者漏掉console.log。我特别讨厌这样的提交removed console.log。所以我会像要提交一样添加文件,然后运行:

git commit --amend --reuse-message HEAD
Enter fullscreen mode Exit fullscreen mode

这会将文件添加到最后一次提交,并重用旧的提交消息。我将其命名为git amend“quickfixes”

注意根据下面的反馈,也可以达到git commit --amend --no-edit同样的效果。

在 origin/master 之上进行 rebase

较旧的分支经常会落后很多,以至于我必须加快速度来消除构建错误、CI 错误,或者只是解决冲突。我最喜欢做的事情是:

git fetch origin # fetch latest origin
git rebase origin/master
Enter fullscreen mode Exit fullscreen mode

这样,我就将当前分支提交堆叠在最新版本的 master 之上!

最后一次提交

有时候,这git log真的让人不知所措。由于我经常使用上述amend命令,我倾向于只查看 git log 中的最后一个提交:

git log -1
Enter fullscreen mode Exit fullscreen mode

检出文件的旧版本(如锁定文件!)

偶尔,我会把一个与我的分支无关的文件搞砸。这种情况通常发生在锁定文件(mix.lock、package-lock.json 等)上。我不会还原一个可能包含一堆其他内容的提交,而是直接将文件“重置”回旧版本。

git checkout hash-goes-here mix.lock
Enter fullscreen mode Exit fullscreen mode

然后我就可以提交修复了!

挑选

我偶尔会用到的一个被低估的命令。当一个分支变得陈旧时,有时直接从中获取真正需要的内容比尝试让整个分支跟上进度更容易。对我来说,一个很好的例子就是那些涉及不再需要的 UI/后端代码的分支。在这种情况下,我可能只想从分支中挑选某些提交。

git cherry-pick hash-goes-here
Enter fullscreen mode Exit fullscreen mode

这会神奇地将该提交带到你所在的分支。你还可以创建一个列表!

git cherry-pick first-hash second-hash third-hash
Enter fullscreen mode Exit fullscreen mode

您还可以进行一系列

git cherry-pick first-hash..last-hash
Enter fullscreen mode Exit fullscreen mode

引用日志

这是一个非常强大的功能,我很少用。一年才用一次!不过了解一下也挺好的。有时候我会丢失提交。比如删除分支,或者重置或修改提交,而我并非故意弄乱了。

在这种情况下,知道reflog它的存在是件好事。它不是你当前分支的单个提交日志,而是你所有提交的日志——即使是死分支上的提交。不过,日志会不时清空(修剪),以便只保留相关信息。

git reflog
Enter fullscreen mode Exit fullscreen mode

该命令返回一个日志,其作用是在提交的基础上进行 cherry-picking 或 rebasing。当你输入 时,它非常强大grep

Bash 命令别名

除了 git 命令之外,我还喜欢使用一些有趣的 bash 别名来帮助我的工作流程

当前分支

为了获取当前分支的名称,我有这个别名:

alias git-branch="git branch | sed -n -e 's/^\* \(.*\)/\1/p'"

Enter fullscreen mode Exit fullscreen mode

当我运行git-branch或运行$(git-branch)另一个命令时,我会得到我当前所在分支的名称。

注意根据评论中的反馈,我将其切换为git symbolic-ref --short HEAD同样有效但您实际上可以阅读它。

追踪上游分支

虽然我确信这在 中是可行的.gitconfig,但我还没弄清楚如何操作。当我第一次在新分支上运行推送时,总是会被要求设置分支以进行上游跟踪。这是我为此设置的别名:

alias git-up="git branch | sed -n -e 's/^\* \(.*\)/\1/p' | xargs git push -u origin "
Enter fullscreen mode Exit fullscreen mode

现在当我运行时git-up,我会推动当前分支并设置上游跟踪!

反馈

根据评论中的一些非常有用的反馈,我对我正在使用的内容做了一些调整。

当前分支

看起来有很多新方法可以获取当前分支名称。如果你向上滚动,你会看到我使用了一个疯狂的sed解析命令来获取分支名称。

这是我的新选择:

alias git-branch="git symbolic-ref --short HEAD"
Enter fullscreen mode Exit fullscreen mode

并且它似乎正如您所期望的那样工作!

文章来源:https://dev.to/antjanus/my-personal-git-tricks-cheatsheet-23j1
PREV
我理想中的 React 组件剖析
NEXT
我最喜欢的 Linux 工具