4

在 OSX 上,我经常去git log寻找一个提交,通常是几个回来,用我的鼠标复制它,然后变基。

我怎样才能在不使用鼠标或记忆的情况下轻松做到这一点?

4

4 回答 4

6

在 OSX 上,您可以使用pbcopy.

因此,要在剪贴板中获取上次提交的 SHA1:

git log -1 --format="%H" | pbcopy
于 2014-09-17T20:30:05.547 回答
3

只需记住前几个字母/数字。

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

于 2014-09-17T20:47:14.477 回答
0

如果您想检查正在复制的内容,请使用更新版本

这将复制短哈希。如果您需要将提交哈希粘贴到 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"`
于 2021-04-01T20:26:31.540 回答
0

要从 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 的初步回答

于 2021-10-19T00:06:04.633 回答