Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git cherry pick创建blob而不是提交?_Git_Tags_Diff - Fatal编程技术网

Git cherry pick创建blob而不是提交?

Git cherry pick创建blob而不是提交?,git,tags,diff,Git,Tags,Diff,几个月前添加的一项功能出现了倒退。该功能是在三个单独的提交中引入的。为了恢复功能,我想git cherry pick将三个提交添加到一个分支上(rel060),该分支是从提交合并到生产中之前的最后一个标记(rel060.6.0版)创建的,由git descripe表示 完成后,我想将此操作的结果与当前生产头上的文件内容进行比较 git co -b rel060 release-0.6.0 git cherry-pick ead47f2 [rel060 f28fed4] Corrects no

几个月前添加的一项功能出现了倒退。该功能是在三个单独的提交中引入的。为了恢复功能,我想
git cherry pick
将三个提交添加到一个分支上(rel060),该分支是从提交合并到生产中之前的最后一个标记(rel060.6.0版)创建的,由
git descripe
表示

完成后,我想将此操作的结果与当前生产头上的文件内容进行比较

git co -b rel060 release-0.6.0
git cherry-pick ead47f2
  [rel060 f28fed4] Corrects non-display of subtabs. (SITE-657)
  1 files changed, 5 insertions(+), 8 deletions(-)
git cherry-pick b22c4d4
  [rel060 b0014f1] Correct subtab bug in Firefox/IE. (SITE-657)
  1 files changed, 18 insertions(+), 24 deletions(-)
git cherry-pick ae5a321
  [rel060 5b41410] Corrects bug with subtab line collapse. (SITE-657)
  1 files changed, 5 insertions(+), 1 deletions(-)
git diff rel060:./cron_lp_functions.php..production:./cron_db_lpgenerate.php
  error: Object 2ce3dd45e32e1bef6da0b22a9ee7208c63e203d2 is a blob, not a commit
  error: Object f41574b41b82aba51876b5f7aba0d3ff9c6677c5 is a blob, not a commit
  fatal: Invalid revision range rel060:./cron_lp_functions.php..production:./cron_db_lpgenerate.php
值得一提的是,尝试在cron\u lp\ux上标记自动完成。。。已生成:
不是有效的对象名称rel060:。

函数
文件是一个文件,其内容后来被转入
lpgenerate

现在,我意识到有一百万种更简单的方法来做我想做的事情(将三个提交视为一个diff,diff标记将特性释放到所讨论的行的当前状态)


我想知道的是:为什么我会出现特定的错误?事实证明,采摘樱桃似乎与问题无关。从标记创建分支后尝试diff会产生相同的错误。我是否错过了git中的一些基础知识?从发布中创建分支似乎是无害的。。。是否存在一些我没有注意到的无害问题?

原因是
git diff..
的存在只是为了保持向后兼容性,在语法上是“错误的”

git diff A..B“一开始说起来是不合逻辑的。它 只有在历史上偶然发生的情况下才能工作,为此“它使用了 要从一开始就这样工作,不要倒退 “兼容性”的原因,我们一直保持它的工作

但你最好还是放弃学习,这样你才能保持清醒 作为新用户学习git

点表示法是关于一个范围的。a..B是关于一组 是B的祖先但不是A的祖先的提交

$ git log A..B
显示这样的范围是非常有意义的

但是“diff”是关于“比较两个端点”,什么都没有 “范围”是关于这样一个比较的。当你在 在B,你甚至不看中间的任何东西,这就是为什么 用规范的方式说它是

$ git diff A B
而不是

$ git diff A..B ;# WRONG. DO NOT DO THIS.
And:是在树中命名实体的一种方法 记录在中。通常您命名一个blob,而不是树 表示子目录的,使用以下语法

现在,B1..B2,当B1和B2是斑点(或任何不是斑点的东西)时 提交(ish),即使作为范围也没有意义,这样的请求 被检测为语法级别的错误(即,没有 开始“比较”)

如果要比较两个blob,可以使用canonical “比较两件事”语法


Junio C.Hamano的回答,viagit@vger.kernel.org
git rev parse release-0.6.0
说了什么(以及
rel060
production
)?什么是
git co
(我猜它是
git checkout
的别名,但值得检查)?看起来您似乎以某种方式创建了指向blob而不是提交的标记/分支,但这肯定是不寻常的…
git rev parse release-0.6.0 533ccfa06697c6e60fde24f1d4a631d3505cc
git rev parse production 5bacdbaf5e5fefa7d915f384e81f9152b7dcefgit rev parse rel060 34dbae8565c45834ab4bCA7CBAD49082F26077Yes,git checkout的别名
git show
Try
git diff rel060:./cron_lp_functions.php production:./cron_db_lpgenerate.php
(两个对象之间没有
)。就是这样!谢谢你的帮助。我没有意识到跨分支文件比较的语法不同于两次提交之间的语法。是的,我自己刚刚运行了一个测试,
git diff
似乎可以使用
git diff..
,但不能使用
git diff:..
。对于这种情况,两个规范似乎需要单独的参数。Mig值得将其作为缺陷/缺陷报告。
$ git diff HEAD:Makefile..HEAD~4:Makefile ;# WRONG. DO NOT DO THIS.
$ git diff HEAD:Makefile HEAD~4:Makefile