2011-03-25 63 views
3

说实话,我遇到了困难与我的git仓库。我一直在从两台不同的机器(例如在工作和家中)处理同一个项目。还有远程存储库(origin),我保留代码的主副本。如何摆脱git中的本地提交?

在开始时,我克隆了存储库表格origin master并开始了新分支(newfeature)。在日常工作中,当我完成工作变更后,我将我的提交从分支newfeature推到origin。当我在家工作时也一样。

昨天我完成了家中新功能的工作,所以我查了一下master,然后合并了newfeature分支。一切都很顺利,所以我把我的新master分支推到origin,然后在本地和远程删除newfeature分支。今天早些时候,我检查出master,现在包含合并的新功能。当我现在运行git status时,它表示没有什么要提交的,但是我的本地分支master提前提交了origin master 38个提交。

我知道origin master有最新的代码,我该如何摆脱任何提前提交的本地提交?

回答

3

在我看来,你的问题描述中有一些错误。

你是说你有一些提交的内容已经被推送到家中的原点。现在你开始工作,你检查出主分支,它说它是在原产地/主人之前? 据我了解,起源/主人应该提前。

我这样的情况下,你需要做的是:

  1. 确保你在看完全处于最新版本的你回购,这意味着它具有远程

    所有最新资讯

    git fetch

这将从配置的所有遥控器取出,然后你就可以的,你主分支VS产地/主比较状态,看看是否存在R被真正的差异或者只是没有正确

  1. 同步。在您的工作流程的描述我希望所有的问题由刚刚

    git checkout master

    git pull

  2. 消失现在,当你说reset --hard带你到你不喜欢的状态 - 你不需要再次从远程克隆。只是这样做:

    git reflog show master

,然后重置你的主人回到提交它指向的复位 - 硬

之前,您应该在原点。

15

您应该origin/master重置master分支:

git checkout master 
git reset --hard origin/master 

警告:硬重置将丢弃在工作拷贝所有的变化,并使其完全一样它是在origin/master

如果我没有得到您的问题,或者您有其他想法,请记住git reflog是您的朋友。

+0

我做过'git reset --hard origin/master'。不幸的是,我昨天推到'origin'的变化现在已经消失了。所以它似乎将工作副本重置为主机,这是之前的38次提交。我不得不再次从远程克隆'master'。 – 2011-03-25 10:21:52