老实说,我的git存储库遇到了困难。我一直在从两台不同的机器上工作(比如在工作和家里)。还有远程存储库(origin
),我保留代码的主副本。
一开始,我克隆了存储库表单origin master
并启动了新的分支(newfeature
)。每天,当我完成工作中的更改后,我将提交从分支newfeature
推送到origin
。我在家工作时也一样。
昨天我在家完成了新功能,所以我检查了master
,然后合并了newfeature
分支。一切都很顺利,所以我将新的master
分支推送到origin
,然后在本地和远程删除了newfeature
分支。今天早些时候在工作中我检查了master
现在包含合并的新功能。当我现在运行git status
时,它表示没有任何内容可以提交,但我的本地分支master
提前origin master
提交了38次。
如果我知道origin master
有最新的代码,我如何摆脱未来的任何本地提交?
答案 0 :(得分:19)
您应该在master
上重置origin/master
分支:
git checkout master
git reset --hard origin/master
警告:硬重置会丢弃工作副本中的所有更改,并使其与origin/master
中的更改完全相同。
如果我没有正确回答您的问题,或者您有其他想法,请记住git reflog
是您的朋友。
答案 1 :(得分:4)
在我看来,你的问题描述中有一些错误。
你说你有一些提交,你已经从家里推到了原点。现在你开始工作,你检查了主分支,它说它是在原点/主人之前? 据我所知,起源/主人应该领先。
我在这些情况下你需要做的是:
确保您正在查看最新版本的repo,这意味着它拥有来自远程的所有最新信息
git fetch
这将从配置的所有遥控器中获取,然后您将能够比较主分支与origin / master的状态,看看是否存在真正的差异或者是否未正确同步
在您对工作流程的描述中,我希望您的所有问题都可以通过
消失 git checkout master
git pull
现在正如你所说,reset --hard
将你带到了你不喜欢的状态 - 你不需要再次从远程克隆。就这样做:
git reflog show master
然后将主服务器重置为重置之前指向的提交--hard
你应该在广场上。