1

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

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

我认为这些更改可能是在以前的提交中,该提交在 Gerrit 似乎需要的合并和变基歌舞例程中以某种方式成为孤立的。

如何查看影响特定文件的所有提交(无论是否孤立)的列表,以便我可以一个一个地浏览它们并尝试找到我的更改?

4

2 回答 2

2

不知道 Gerrit 和“merge-and-rebase song-and-dance”部分,但在 Git 中,一旦提交,您总是可以恢复(除非您采取特殊措施来防止这种情况发生)。

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

git reflog -- <file>

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

git merge <commit_id>

或者

git reset --hard <commit_id>

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

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

编辑:

发现了一个有趣的技巧:

git cherry-pick -n <commit_id>

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

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

于 2013-06-19T16:28:18.703 回答
0

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

git log -g --pretty=oneline --all -- file1
于 2013-06-19T16:26:54.713 回答