GIT - 如何在 OSX 上不使用鼠标复制 SHA?

wej*_*ski 4 git macos pbcopy

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

如何在不使用鼠标或记住它的情况下轻松完成此操作?

Kuh*_*ess 6

在 OSX 上,您可以使用pbcopy.

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

git log -1 --format="%H" | pbcopy
Run Code Online (Sandbox Code Playgroud)


Nic*_*ich 3

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

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