3

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

  • 掌握
  • cert_creation

昨天我在分支 *cert_creation* 并且我做了一个

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

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

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

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

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

(以及其他几个不起作用的)。现在的问题是,我把一切都搞砸了。现在我的本地机器上有一个非常旧的 git commit(这是从我上次将 cert_creation 合并到 master 时)。

现在的问题是我怎样才能“revert the revert”,即将我的本地 git 存储库更新到最后一次远程提交。可能这已经在互联网上的某个地方被问了 100 次,但我找不到正确的关键字:[] 而且因为我已经搞砸了一些事情,所以我真的很想确保做正确的事情。

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

4

2 回答 2

6

好吧,我现在想出了怎么做……就我而言,我想用来自 bitbucket 的远程分支 cert_creation 完全覆盖本地分支 cert_creation。

为此,我检查了我目前在哪个分支:

git branch

当我目前在 cert_creation 中时,我必须离开它并转到 master (或其他一些分支):

git checkout master

现在我在本地删除混乱的分支:

 git branch -d cert_creation

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

git fetch origin cert_creation

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

git checkout -b cert_creation origin/cert_creation 

也非常感谢this answer to some other question on stack overflow,这帮助我解决了这个问题!

于 2013-09-26T18:20:55.850 回答
1

要让您的本地人使用最新的遥控器,只需执行git pull. git reset --hard将您的本地 HEAD 设置为特定的提交并删除所有连续的更改。因此,您需要从远程进行更改。您已经完成了硬重置,因此您不必担心本地更改会合并到您的本地。

供参考:

恢复是与先前提交相反的提交。您还没有进行还原,因此您不需要“还原还原”。

更新

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

于 2013-09-26T18:20:17.997 回答