在OSX上,我经常去git log
以找到一个提交,通常是几个返回,用鼠标复制它,然后重新建立基础。
我怎么能在不使用鼠标或不记住鼠标的情况下轻松做到这一点?
在OSX上,您可以使用pbcopy
。
因此,要在剪贴板中获得上次提交的SHA1:
git log -1 --format="%H" | pbcopy
只需记住前几个字母/数字。
Git不需要完整的哈希来重新建立基础,它只需要它的前几个字符
例如:
git log
提交674973年前的
提交11be728caad156d5cb6ce336747aab4ee3417b0
提交e63760a22b4e5919961e409a6fac09176a574b6
提交3521260b7d04fc92eaeb9c70fa46999dc1ecda3d
提交
(减去额外的提交内容)
现在,假设您想要第二个11be728caad156d5cb6ce336747aab4e5e3417b0
您可以简单地重新设置前几个字符的基础。
git rebase 11be
进一步的信息:从技术上讲,git只需要一个哈希的唯一开头。因此,在这种情况下,git rebase 1
就足够了,因为没有其他提交哈希以1开头。然而,在极端情况下,您可能需要超过4-5个字符(非常不可能)
此外,可以随意使用git log -n
只获取最后n个提交数。通过将其保持在较低的数字,当您调用rebase时,提交通常仍在屏幕上,因此您不需要记住。只需手动复制前几个字符。提示:如果git在您点击'q'退出后刷新日志输出,则可以使用命令git --no-pager log -n
将输出设置为"stick"。
对于添加的关于git和rebase的信息,如果您知道您想要精确地rebase 4个提交,那么您可以使用HEAD
引用。您当前的提交是HEAD
,前一次提交是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的初步回答