如何查看使用git影响特定文件的所有提交的列表(包括孤立或悬空提交)

时间:2013-06-19 15:44:22

标签: git

我正在使用Git + Gerrit,结果比我预期的要多一点。

由于尚未达到学习曲线的顶部;我丢失了对文件所做的一些更改。

我认为这些更改可能是在之前的提交中,这种提交在Gerrit似乎需要的merge-and-rebase歌曲和舞蹈例程中以某种方式成为孤儿。

如何查看影响特定文件的所有提交(孤立或未孤立)的列表,以便我可以逐个查看并尝试查找更改?

2 个答案:

答案 0 :(得分:2)

不了解Gerrit和“合并并重新组合歌曲和舞蹈”的部分,但是在Git中你可以随时恢复(除非你采取特殊措施来防止这种情况)。

首先检查您感兴趣的内容:

git reflog -- <file>

一旦知道(差)孤立提交的ID,您就可以执行以下操作之一:

git merge <commit_id>

git reset --hard <commit_id>

两者之间的选择取决于您,并取决于以下因素(其中包括):

  • 本地副本的状态
  • 您尝试恢复的提交的相对位置(在历史记录中)
  • 你有多少时间

编辑:

发现了一个有趣的伎俩:

git cherry-pick -n <commit_id>

这将是你的当前HEAD的孤立提交,但不会自动提交更改 - 你可以检查不相关的东西,只保留对相关文件的更改。

注意:我从未使用过rebase,因此可能会出现这种伎俩需要某种适应你的情况

答案 1 :(得分:0)

您可以使用log获取提交列表。这样做会在所有分支上显示对file1的更改(有关更多信息,请参阅git-log的联机帮助页):

git log -g --pretty=oneline --all -- file1