在 OSX 上,我经常去git log寻找一个提交,通常是几个回来,用我的鼠标复制它,然后重新设置它。
如何在不使用鼠标或记住它的情况下轻松完成此操作?
在 OSX 上,您可以使用pbcopy.
因此,要在剪贴板中获取上次提交的 SHA1:
git log -1 --format="%H" | pbcopy
Run Code Online (Sandbox Code Playgroud)
只需记住前几个字母/数字即可。
Git 不需要完整的哈希值来变基,它只需要它的前几个字符。
例如:
git log
Run Code Online (Sandbox Code Playgroud)
提交 a64da17d5f674973ead1a0bcf0196f292313893f
提交 11be728caad156d5cb6ce336747aab4e5e3417b0
提交 e63760a22b4e5919961e409a66fac09176a574b6
提交 3521260b7d04fc92eaeb9c70fa46999dc1ecda3d
提交 ba4868bd6a6b4e9d9a77f66e77be189d37b1ffe8
(减去额外的提交内容)
现在,假设您想要第二个,11be728caad156d5cb6ce336747aab4e5e3417b0
您可以简单地基于前几个字符进行重新设置。
git rebase 11be
Run Code Online (Sandbox Code Playgroud)
更多信息:从技术上讲,git 只需要一个唯一的哈希开头。因此,在这种情况下,git rebase 1就足够了,因为没有其他提交哈希以 1 开头。但是,在极端情况下,您可能需要超过 4-5 个字符(非常不可能)
另外,请随意使用git log -n仅获取最后 n 次提交。通过将其保持在较低的数字,当您调用 rebase 时,提交通常仍会显示在屏幕上,因此您无需记住。只需手动复制前几个字符即可。提示:如果 git 在您按“q”退出后刷新日志输出,您可以使用该命令git --no-pager log -n将输出设置为“stick”。
有关 git 和 rebase 的附加信息,如果您知道要对 4 个提交进行 rebase,则可以使用参考HEAD。您当前的提交是HEAD,1 次提交之前是HEAD~1等。例如:
git rebase HEAD~4
Run Code Online (Sandbox Code Playgroud)
将设置3521260b7d04fc92eaeb9c70fa46999dc1ecda3d为新的HEAD(因为我们正在重新建立基础ba4868bd6a6b4e9d9a77f66e77be189d37b1ffe8)