Git-Grep搜索
我试图比较Git项目的两个提交。我要做的是将存储库克隆到postfix文件夹,然后使用:Git-Grep搜索,git,Git,我试图比较Git项目的两个提交。我要做的是将存储库克隆到postfix文件夹,然后使用: git --grep=xxx 其中xxx是提交号,检索散列,然后对检索到的散列使用git checkout 但是,git grep只返回该特定提交的详细信息 例如,如果提交的ID为24,那么我检索ID为23的提交是否足够,以便获得没有修复程序的项目版本?要比较Git存储库的两次提交,只需使用: 要比较Git存储库的两次提交,只需使用: 要比较Git存储库的两次提交,只需使用: 要比较Git存储库的两次提交
git --grep=xxx
其中xxx是提交号,检索散列,然后对检索到的散列使用git checkout
但是,git grep只返回该特定提交的详细信息
例如,如果提交的ID为24,那么我检索ID为23的提交是否足够,以便获得没有修复程序的项目版本?要比较Git存储库的两次提交,只需使用:
要比较Git存储库的两次提交,只需使用:
要比较Git存储库的两次提交,只需使用:
要比较Git存储库的两次提交,只需使用:
签出提交后,可以轻松返回到父提交(假设它只有一个父级):
签出提交后,可以轻松返回到父提交(假设它只有一个父级):
签出提交后,可以轻松返回到父提交(假设它只有一个父级):
签出提交后,可以轻松返回到父提交(假设它只有一个父级): 背景 我不确定您所说的那些ID是什么:Git提交没有任何顺序ID,只通过它们的SHA-1名称进行标识,SHA-1名称是在相应提交对象上计算的哈希值 所以我可能会假设您正在谈论一个嵌入一些外部生成ID的项目。一个原因可能是,这是一个遵循Subversion存储库的项目,因为默认情况下,在此类存储库中创建的所有提交都将在其消息中人工嵌入Subversion URL和修订ID 从中得到什么 第一件事:一般来说,您的问题的答案是否定的。原因是,如果是合并提交,任何Git提交都可能有多个父级。因此,考虑提交而仅仅后退(参见下面的方法)是不可能的 如何选择父提交? 手动页面列出了选择父提交之一的两种形式:
,例如^
,HEAD^
修订参数的后缀v1.5.1^0
表示提交对象的第一个父对象^
表示第^
个父项(即
相当于^
)。作为一项特殊规则,^1
表示提交本身,当^0
是引用提交对象的标记对象的对象名时使用
,例如~
修订参数的后缀master~3
表示提交对象,它是命名提交对象的第~
代祖先,仅位于第一个父对象之后。也就是说,
相当于~3
,后者相当于^^
。有关此表单的用法说明,请参见下文^1^1
2abcde45
,您可以使用2abcde45^
或2abcde45^1
或2abcde45~1
来引用它的第一个父级,这些都与此任务相同
我想再次强调一个事实,Git提交没有您似乎正在使用的“ID”,因此请花时间真正了解您正在处理的ID。在这里发布另一个问题,这样引用一个示例提交的提交消息就可以了。Background 我不确定您所说的那些ID是什么:Git提交没有任何顺序ID,只通过它们的SHA-1名称进行标识,SHA-1名称是在相应提交对象上计算的哈希值 所以我可能会假设您正在谈论一个嵌入一些外部生成ID的项目。一个原因可能是,这是一个遵循Subversion存储库的项目,因为默认情况下,在此类存储库中创建的所有提交都将在其消息中人工嵌入Subversion URL和修订ID 从中得到什么 第一件事:一般来说,您的问题的答案是否定的。原因是,如果是合并提交,任何Git提交都可能有多个父级。因此,考虑提交而仅仅后退(参见下面的方法)是不可能的 如何选择父提交? 手动页面列出了选择父提交之一的两种形式:
,例如^
,HEAD^
修订参数的后缀v1.5.1^0
表示提交对象的第一个父对象^
表示第^
个父项(即
相当于^
)。作为一项特殊规则,^1
表示提交本身,当^0
是引用提交对象的标记对象的对象名时使用
,例如~
修订参数的后缀master~3
表示提交对象,它是命名提交对象的第~
代祖先,仅位于第一个父对象之后。也就是说,
相当于~3
,后者相当于^^
。有关此表单的用法说明,请参见下文^1^1
2abcde45
,您可以使用2abcde45^
或2abcde45^1
或2abcde45~1
来引用它的第一个父级,这些都是相同的
git diff commit1 commit2
$ git checkout HEAD^