繁体   English   中英

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

[英]How can I see the list of all commits that affect a specific file with git (including orphaned or dangling commits)

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

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

我认为这些更改可能是在先前的提交中,该提交在某种程度上已经变成了Gerrit似乎要求的合并并变基础的歌曲和舞蹈程序的一部分。

如何查看影响特定文件的所有提交(孤立或未孤立)的列表,因此我可以一个接一个地浏览它们并尝试查找更改?

不了解Gerrit和“合并和还原歌曲与舞蹈”部分,但是在Git中,一旦您提交就可以始终还原(除非您采取特殊措施来防止这种情况)。

首先检查您感兴趣的提交:

git reflog -- <file>

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

git merge <commit_id>

要么

git reset --hard <commit_id>

两者之间的选择取决于您,并且取决于以下因素(以及其他因素):

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

编辑:

找到了一个有趣的把戏:

git cherry-pick -n <commit_id>

这将在您当前的HEAD上增加您的孤立提交,但不会自动提交更改-您可以签出无关的内容,仅保留对相关文件的更改。

注意:我从未使用过rebase,因此可能这种情况下需要对您的情况进行某种调整

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM