【问题标题】:Git: How to compare files at an unknown point of a branch?Git:如何比较分支未知点的文件?
【发布时间】:2014-10-18 17:10:59
【问题描述】:

我有一个 git 存储库,其中包含一个项目。 在某个时间点(2013 年 5 月至 9 月之间),有人手动从 repo 中复制了文件,没有进行修订控制并对其进行了更改。 与此同时,我的回购协议也发生了许多变化。 现在我想查看手动复制文件的其他人所做的更改。自从他复制了文件后,他没有合并我的更改,所以我不能仅在当前状态下从他和我的仓库中区分文件。

那么我如何才能找到我的存储库与更改的文件最接近的提交并在那时进行比较?

编辑:我的问题类似于this question,但我只知道时间范围。

【问题讨论】:

  • 您可以轻松获取该时间范围内的提交列表;那么这两个问题是一样的。
  • 我该如何执行那里建议的 for 循环?我没有任何修订,只有时间范围(或时间范围内的提交)?
  • @Apology11 我们希望将答案与问题分开,因此您应该编写单独的答案,而不是将答案编辑到问题中。自我回答是完全可以接受的,写得好的回答可能会为您赢得额外的声誉。

标签: git


【解决方案1】:
  1. 获取对方的代码:

    git remote add other url-to-other-persons-repo
    git fetch other
    
  2. 获取diff

    git diff other/master
    

【讨论】:

  • 问题是没有其他人的回购,也没有提交历史,因为他手动复制了文件......即使我现在用他的更改制作一个,我也有我在该差异中所做的更改。
【解决方案2】:

解决方案: 正如 Matthew Strawbridge suggested 另一个问题的解决方案在这里也有效。这是我所做的:

#!/bin/sh
 for REV in $(git rev-list foreign/master --after=2013-05-01 --until=2013-09-01); do
 git diff --shortstat $REV >> ~/rdiffs.txt;
 echo "$REV" >> ~/rdiffs.txt;
done

然后我在Excel中写了一个vba makro对结果进行排序:

Sub sort()

Dim Zeile, Nzeile As Integer

For Zeile = 2 To ActiveSheet.UsedRange.Rows.Count Step 2

    Rows(Zeile).Cells(1).Select
    Selection.Cut
    Nzeile = Zeile - 1
    Rows(Nzeile).Cells(2).Select
    ActiveSheet.Paste

Next

For Zeile = 2 To ActiveSheet.UsedRange.Rows.Count Step 1

    Rows(Zeile).EntireRow.Delete

Next

End Sub

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 2012-10-08
    • 2020-01-01
    • 1970-01-01
    • 2017-07-23
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多