我有一个临时服务器,在那里我使用git服务器中的git pull
更新代码。这里有一个可能相关也可能不相关的细节是,在某个时候,每次我拉它时,它都会要求我合并。我还没有足够的时间弄清楚原因。无论如何,如果我看git log
,在每次拉取之后都会有一个合并。无论如何,不是真正的问题。我只需要暂时恢复之前的两次提交(带有两次相应的合并(。我对如何使用git revert
(显示在git日志中的2+2=4散列(然后提交非常有信心。
问题是,我想在未来晚些时候重新提交回复,因为我们稍后需要这些更改,但不是现在。我需要做一些特别的事情吗?这样我就不会丢失我恢复的提交?
revert
可能不是您想要的;revert
添加了一个新的提交,该提交撤消了一组更改。reset
更像它,它用于修改分支历史记录,但在做任何鲁莽的事情之前请继续阅读。
我建议的第一件事是尝试使用pull -r
将您的本地更改自动重定为分支的更新HEAD
(即分支的远程副本(。
您也可以使用rebase -i origin/mybranch
启动交互式rebase
。回扣是git最强大的功能,它允许您重写历史。这也有点危险,所以要小心。
rebase
教程:https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase
无论您对本地git目录做了什么,reflog
都会让您看到您的repo以前的状态(提交(。它救了我一两次屁股,当我不小心"丢失";当我搞砸了一个重新基准或重置时的承诺。