撤消更改后Git重置状态

时间:2013-09-11 22:37:16

标签: git version-control

我是Git的新手,所以我不确定如何解决目前的情况。

我有一个“主”存储库A。然后我将其克隆为存储库B。两者都碰巧在同一台机器上,虽然将来它们不会。 AB的遥控器。

我的设计是对A进行更改,B只需从上游进行更新即可。 B有时可能会有一些本地更改。

问题是我在B而不是A上意外地进行了更改。在此更改之前,两个回购都是相同的。更改是从先前的提交中恢复一些图像(将它们从“原始”状态转换为“正确”状态),但我不认为它是一个回复的事实。然后,注意到我在错误的仓库上做了它,我解除了我刚恢复的(在我开始之前将图像设置为原始状态),而是在“master”/ upstream {{ 1}}。

enter image description here

现在,A再次拥有原始图像,B包含新修复的图像。问题是A表示它是B之前的两次修订。它为我提供了推送到A的选项,但如果我这样做则会出错:

  

remote:错误:拒绝更新签出的分支:   refs / heads / master remote:错误:默认情况下,更新   非裸存储库远程中的当前分支:错误:是   否认,因为它会使索引与工作树不一致   remote:错误:你推了什么,并且需要'git reset   --hard'匹配remote:错误:工作树到HEAD。

     

remote:error:remote:错误:你可以设置   'receive.denyCurrentBranch'配置变量到远程:   错误:远程存储库中的“忽略”或“警告”以允许推送   进入远程:错误:当前分支;然而,事实并非如此   建议除非你远程:错误:安排更新它   工作树匹配您在某个远程推送的内容:错误:   另一种方式。远程:错误:远程:错误:静噪   此消息仍然保持默认行为,设置远程:   错误:'receive.denyCurrentBranch'配置变量为'拒绝'。   致C:\ dev \ jenkins-1.501! [远程拒绝]主人 - >主人(分支机构   目前已签出)

如何让A不在B的“前方”?我现在有A,因为它应该是,我想要只需将更改提取到A

1 个答案:

答案 0 :(得分:0)

您需要将B的{​​{1}}分支标签点重新设置为“B”提交master说。

既然您确定要删除A上所做的所有更改,这很容易!

第1步,获取最新信息(如果您已经更新,则为无操作):

B

第2步,确保你在机器上B$ git fetch origin 并且在分支机构B等等。

master

第3步:在B$ hostname; git status # etc 上,假设您现在所在的分支(即B)应设置为与master相同的点,即“{ {1}}我上次origin/mastermaster看到了A以获取最新动态“:

fetch

(顺便说一句,所有这些都是命令行;你运行的任何GUI,你可能必须强制它重新读取底层的git仓库以获取更改。)