在 OSX 上,我经常去git log
寻找一个提交,通常是几个回来,用我的鼠标复制它,然后变基。
我怎样才能在不使用鼠标或记忆的情况下轻松做到这一点?
在 OSX 上,您可以使用pbcopy
.
因此,要在剪贴板中获取上次提交的 SHA1:
git log -1 --format="%H" | pbcopy
只需记住前几个字母/数字。
Git 不需要完整的哈希来变基,它只需要它的前几个字符。
例如:
git log
提交 a64da17d5f674973ead1a0bcf0196f292313893f
提交 11be728caad156d5cb6ce336747aab4e5e3417b0
提交 e63760a22b4e5919961e409a66fac09176a574b6
提交 3521260b7d04fc92eaeb9c70fa46999dc1ecda3d
提交 ba4868bd6a6b4e9d9a77f66e77be189d37b1ffe8
(减去额外的提交内容)
现在,假设您想要第二个,11be728caad156d5cb6ce336747aab4e5e3417b0
您可以简单地基于前几个字符。
git rebase 11be
更多信息:从技术上讲,git 只需要一个唯一的哈希开头。所以在这种情况下,git rebase 1
就足够了,因为没有其他提交哈希以 1 开头。但是,在极端情况下,您可能需要超过 4-5 个字符(非常不可能)
此外,请随意使用git log -n
仅获取最后 n 次提交。通过将其保持在较低的数字,当您调用 rebase 时,提交通常仍然在您的屏幕上,因此您无需记住。只需手动复制前几个字符。提示:如果 git 在你点击 'q' 退出后刷新日志输出,你可以使用命令git --no-pager log -n
让输出“粘住”。
有关 git 和 rebase 的附加信息,如果您知道要精确地 rebase 4 次提交,您可以使用HEAD
参考。您当前的提交是HEAD
和 1 之前的提交是HEAD~1
等等。例如:
git rebase HEAD~4
将设置3521260b7d04fc92eaeb9c70fa46999dc1ecda3d
为新的HEAD
(因为我们基于ba4868bd6a6b4e9d9a77f66e77be189d37b1ffe8
)
如果您想检查正在复制的内容,请使用更新版本
这将复制短哈希。如果您需要将提交哈希粘贴到 GitHub 评论中,此版本非常有用。GitHub自动链接提交(参考)。
git log -1 --format="%h" | pbcopy | echo `git log -1 --format="%h"`
这将复制长哈希
git log -1 --format="%H" | pbcopy | echo `git log -1 --format="%H"`
要从 n 次提交之前复制提交哈希,请将其作为参数传递给 log 命令。
git log HEAD~3 --format="%h" | pbcopy
git log HEAD~3 --format="%H" | pbcopy
替换HEAD~3
为您想要返回的提交次数。验证您复制正确哈希的一种方法是将其粘贴到 git show
git show <pasted hash>
如果错误,请相应地更改父编号。数字越高,你走的历史越远。
有关使用波浪号和胡萝卜遍历提交历史的更多信息,请参阅此 SO 链接~
^
注意:不确定我是否应该只回复 wejrowski 作为评论,但决定作为另一个答案发布,以建立在以前的答案的基础上。感谢 Kuhess 和 Nick Humrich 的初步回答