Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复还原的git提交?_Git_Commit - Fatal编程技术网

如何修复还原的git提交?

如何修复还原的git提交?,git,commit,Git,Commit,我已经向存储库提交了一系列更改,这些更改被其他人还原(它们在windows上编译,但在linux上编译)。我认为这些更改仍在历史记录中,但我如何恢复这些更改,修复它们,然后重新提交?您是否尝试过恢复 他们使用恢复了您的提交 git revert <your commit id> git还原 还原本身是一个提交,并且有自己的提交id git revert <the commit id of his revert-commit> git还原 您可以使用git rever

我已经向存储库提交了一系列更改,这些更改被其他人还原(它们在windows上编译,但在linux上编译)。我认为这些更改仍在历史记录中,但我如何恢复这些更改,修复它们,然后重新提交?

您是否尝试过恢复

他们使用恢复了您的提交

git revert <your commit id>
git还原
还原本身是一个提交,并且有自己的提交id

git revert <the commit id of his revert-commit>
git还原

您可以使用git revert尝试还原还原。您还可以使用
git checkout
从提交中恢复文件。或者您可以使用git cherry pick-n重新应用并更改它们。您可以使用
git branch
从提交中创建一个新分支,并在其中应用更改。可能性(几乎)无穷

这里的其他答案涉及如何恢复或选择提交,但从问题听起来,似乎您还需要知道如何找到提交,因此这里有一些指导

如果您只是运行
git log
,您应该会在当前分支的历史记录中看到一个提交列表,从最新的提交开始。每个提交都有一个标识符,技术上称为对象名(或“提交的SHA1sum”),如下所示:

commit d2d434beeb03e4ee648ca7ca2a1ea1ed09077306
。。。然后是作者姓名、日期和提交时引入的更改摘要。当您为
git revert
git cherry pick
指定对象名时,您可以为其指定
d2d434beeb03e4ee648ca7ca2a1ea1ed09077306
,或者从对象名的开头输入足够的字符,以使其明确无误(例如
d234bee

git log
有许多选项可以帮助您跟踪提交,如
--before
-S
,等等。但在这种情况下,您可能特别需要
--author=MyLastName


一个图形化的git工具是
gitk--all
,它可以很好地向您展示历史,并且可以在每个平台上使用。如果你点击一个你想还原的提交,你可以从窗口中间的“Sa1ID”字段复制并粘贴它的对象名称。答案更适合于多个提交,并且如果您不希望还原的git日志或源代码管理历史中出现混乱,那么再次还原还原

git revert abcd123
git revert --no-commit wxyz789
git commit --amend -m"you edit commit message"
您还可以在一行中为两个或多个恢复提交设置简明的内容,如:

git revert abcd123 wxyz789 --no-commit 
git commit --amend -m"you edit commit message"
。。。然后编写一条适当的提交消息,描述恢复两次提交的组合效果


所有这些都将显示为带有给定消息的单个提交,而不是git日志或源代码管理日志(如bitbucket/TFS/JIRA git integration)中的多个恢复提交。

继续。。。我需要知道这些神奇的词语,而不仅仅是理论。如果你在查找ID时遇到困难,请向我展示commitlog。使用git日志查找ID。谢谢恢复?大声读我的答案听起来真的很愚蠢。:-)+1:
git cherry pick--no commit
是一个很好的选择,特别是因为您可以重复执行此操作以进行进一步的更改git cherry pick的可能重复项与日志中的大提交id非常有吸引力。。再次保存了3天的代码编写时间。。谢谢