首页 > 解决方案 > git clone 后 git 差异无法正常工作

问题描述

我有一个 bash 脚本,我必须在其中克隆并获取一些存储库的差异。我正在尝试获取日期范围之间的差异

git clone $repository 
cd $path
git diff master@{2019-10-1}..master@{2019-10-14} -- package.json

但它显示错误: 警告:'master' 的日志仅返回 2019 年 10 月 15 日星期二 09:51:16 +0000。

但是这个存储库很旧并且有很多提交。当我在几周前克隆相同存储库的机器上本地执行此操作时,我得到了适当的区别。

$ git diff master@{2019-10-1}..master@{2019-10-14} -- package.json
diff --git a/package.json b/package.json
index d29ffcb..8766fde 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "accountd",
-  "version": "0.0.95",
+  "version": "0.0.102",
   "main": "dist/src/index.js",
   "private": true,
   "scripts": {
@@ -8,7 +8,8 @@
     "start-dev": "npm run build && nodemon . port=5000 stage",
     "start-sand": "npm run build && nodemon . port=5000 stage",
-    "test": "nyc --extension .ts --reporter=html --reporter=cobertura --reporter=text mocha -r ts-node/register src/**/*.spec.ts --exit",
+    "test": "mocha -r ts-node/register test/**/*.spec.ts  test/**/**/*.spec.ts --exit",

我希望在一段时间内对此特定文件所做的更改。

标签: bashgit

解决方案


您使用的符号 ( master@{<date>}) 表示您要根据本地 reflogs 引用masteron的版本。也就是说,您是说您想知道该特定克隆的ref 在该日期指向的内容 - 而不是在该日期提交的当前提交。<date> mastermaster

mastergit 告诉你“这个克隆在那个日期没有参考”。

要做到你的意思,你首先必须找到“当时”日期之前的最后一次提交,然后diff反对。有很多方法,但类似

git diff $(git rev-list -n1 --before="<date>" --first-parent master) master

可能是你想要的更多


推荐阅读