【问题标题】:Git relative revision numbersGit 相对修订号
【发布时间】:2011-02-26 18:24:15
【问题描述】:

是否有可能(以某种方式)在 Git (local) 中具有相对修订 (commit) 编号,例如 Mercurial 0、1 , 2, 3, ... 而不是短哈希?

或者还有什么更用户友好的

【问题讨论】:

  • 如果您希望它对用户友好,为什么不使用 Git GUI 客户端,您可以在其中选择提交,而不必为其输入 ID?
  • @mklhmnn - 因为我不 :) (经常在笔记本电脑上工作,看不到鼠标 - 我尽可能多地喜欢 cl 界面;此外,还没有看到一个 git gui我会考虑在兼容 ibm 的设备上使用;mac 版本是另一回事)
  • 有一种相反的方法——给定一个散列,以逻辑方式为其分配一个整数,类似于 hg 所做的。我希望我能找到描述它的帖子;我会继续寻找。您可能会在每次创建新提交时自动执行某些操作,然后创建一个从“hg-style”编号到 SHA 的命令。编辑:看起来git describe 是我的想法。 ufoai.ninex.info/forum/index.php?topic=5538.0
  • @Dustin - 我看不出他们有什么问题,除了你不必经常输入哈希值,而是在自己工作时很方便,有很好的数字。当与其他开发人员交谈时,你当然会使用哈希。节省了大量的打字,而且它们比记住(9b2466 和 4332b3)之间的区别更友好(与 rev 3 和 5 相比)。当一个人工作时,那是很多时间。
  • 我几乎从不输入哈希值。我可能会问1.2.31.2.4origin/master~5 之间有什么区别。如果我想具体一点,我会粘贴一个哈希。练习不同于你可能认为你会做的事情。这让我想起了很多人由于空格的重要性而对使用 python 有多么抗拒,但是一旦你这样做了,你就很少考虑它了。

标签: git


【解决方案1】:

只需使用:

  • master~10 获取分支 master 上的第 10 个最后提交。
  • master^ 获取分支 master 上的倒数第二次提交。
  • master^^ 获得分支 master 上的第三个最后提交。

它们甚至可以组合:master^^~5^

master 可以是任何分支名称(本地或远程)或HEAD 以引用当前提交。

您可以使用master^2 获取第二个合并父级。

【讨论】:

  • HEAD代替master不是更好吗?这样你就不必考虑你在哪个分支。
  • @martin:嗯,HEAD 总是从当前签出的提交开始倒数(可以是分支、标签或处于分离头状态的提交)。这取决于用例,替换实际的分支名称
  • 谢谢 knittl;我读过 O'reilly 书中的那些内容,但不知何故,我不认为这是一个很大的改进。特别是因为我的语言键盘布局(克罗地亚语)上既没有波浪号也没有 ^,所以我每次都必须切换到 En。
  • 是否有可能以某种方式创建一系列需要 1、2、3 ... 的别名并将它们转换为 ?你觉得怎么样;可行吗?
  • 有没有办法以同样的方式引用较新的版本?
【解决方案2】:

您始终可以通过using a prefix of its SHA-1 hash 引用提交,只要它是唯一的。例如,如果你想签出980e3ccdaac54a0d4de358f3fe5d718027d96aae,你可以使用git checkout 980e,只要没有其他提交以980e开头。

【讨论】:

  • 另一方面,如果您的目标是更容易地查看哪些提交在哪些之前,您可能应该使用gitk、Git Extensions 或其他一些工具来可视化提交图。
  • 我试图避开那些前缀(真遗憾;我什至从来没有想过我会去写一个完整的哈希)——这六个或八个(通常),因为来自 Hg一件事一直困扰着我(不,这次我无法选择我的 vcs)。
  • @Rook:当然,我不认为你在输入哈希值。我只是想你觉得它们在美学上并不特别令人愉悦。 :-) 当我从 Hg 切换到 git 时,我也对哈希感到恼火,但我个人的经验是你已经习惯了它们,并且分支管理在 git 中如此简单和灵活,所以没有太多需要直接处理哈希(特别是如果您使用可视化工具)。
  • 是的,我想你说的有些道理。我想我会习惯它(一段时间)但现在他们一直在烦我:)
【解决方案3】:

我刚刚做了一些事情就是这样做的:dash-r。它仍然很粗糙,但您可能会发现它很有用。

基本上,它是一个 shim,可以生成基本 git 日志的修改版本,其提交行如下:

commit 4  id: a4d0892d38f4d72902e35a5b1ca11e602fffcef6

然后通过用反引号包围 -r 调用来引用这些数字:

git diff `-r 2`

(假设您使用名称“-r”将它安装在路径中。我这样做是因为如果我忽略反引号,它看起来像一个常规选项。)

它甚至可以处理范围和负数:

git diff `-r 2..-2`

Git 缺少修订号一直是我对 Git 的热情的主要障碍。在git log 中看到 SHA 哈希打破了我的流程。所以我希望它对我们俩都有帮助。

【讨论】:

    【解决方案4】:

    简答:没有。 Yes.

    但是,您可以使用 git-tag。例如,要将您的最新提交标记为 1.2 版,请执行以下操作:

    git tag -a v1.2 HEAD
    

    此页面说明如何使用它进行版本控制:http://grinninggecko.com/commit-version-numbers-with-git/

    【讨论】:

    • 完全错过了这是 localrelative 提交!
    • 对此感到疑惑 ;) 仍然为努力 +1(有人会发现这很有用)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2012-02-27
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多