搞砸了本地git存储库 - 如何“还原恢复”以再次匹配最后一次远程提交?

时间:2013-09-26 17:14:20

标签: git bitbucket

我在bitbucket上有一个远程git存储库(它是私有的,所以我不能在这里共享链接,我很害怕)......我有几个分支,其中两个是:

  • cert_creation

昨天我在分支机构* cert_creation *并且我已经完成了

git add --all
git commit -m "changes blabla"
git push origin cert_creation

......一切都很好。当我查看Bitbucket网站上的最新提交时,所有更改似乎都已保存。

然而,当我今天在我的本地计算机上打开一些文件时,我想,它们并不是最新的。

所以我想将本地计算机上的所有更改还原为最新的远程提交(我知道这是正确的)。我用Google搜索将本地git存储库恢复为最新的远程提交。我使用了这些命令:

git reset HEAD --hard
git clean -fd
git fetch origin
git reset --hard origin/master

(以及其他一些不起作用的人)。现在的问题是,我已经搞砸了一切。现在我在我的本地机器上有一个非常古老的git提交(这是我最后一次将cert_creation合并到master)。

现在的问题是如何“恢复恢复”,即将我的本地git存储库更新到最后一次远程提交。可能这已经在互联网上的某个地方被问了100次,但我找不到正确的关键词:[]而且我已经搞砸了一些东西,我真的想确保做正确的事情。

非常感谢你提前回答,我非常感谢你的帮助!

2 个答案:

答案 0 :(得分:5)

好吧,我想出了现在该怎么做...在我的情况下,我想用bitbucket中的远程分支cert_creation完全覆盖本地分支cert_creation。

为此,我检查一下我目前在哪个分行:

git branch

当我目前在cert_creation时,我必须离开它并去主人(或其他分支):

git checkout master

现在我在本地删除乱搞分支:

 git branch -d cert_creation

...获取有关正确远程分支的信息:

git fetch origin cert_creation

...最后根据远程分支重建本地分支:

git checkout -b cert_creation origin/cert_creation 

还要非常感谢this回答关于堆栈溢出的其他问题,这有助于我解决这个问题!

答案 1 :(得分:0)

要获取本地最新的遥控器,只需git pull即可。 git reset --hard将您的本地HEAD设置为特定提交并删除所有连续更改。因此,您需要从遥控器中删除更改。您已完成硬重置,因此您不必担心将本地更改合并到您的本地。

仅供参考:

revert是一个提交,它与之前的提交相反。您还没有进行恢复,因此您无需“还原恢复”。

更新

从远程分支获取更新的问题是因为在将本地分支推送到origin之后,您没有将本地分支设置为跟踪。为了推或拉,您需要指定要从/向推或拉的远程分支。为避免这种情况,您可以运行git branch -u origin/<branchname> <branchname>。这会将您的本地分支设置为跟踪远程,您将能够毫无问题地执行git pull。要查看跟踪分支,请运行git branch -vv。这将显示分支名称以及分支正在跟踪的最新提交和远程分支(如果有)。