我是Git的新手,所以我不确定如何解决目前的情况。
我有一个“主”存储库A
。然后我将其克隆为存储库B
。两者都碰巧在同一台机器上,虽然将来它们不会。 A
是B
的遥控器。
我的设计是对A
进行更改,B
只需从上游进行更新即可。 B
有时可能会有一些本地更改。
问题是我在B
而不是A
上意外地进行了更改。在此更改之前,两个回购都是相同的。更改是从先前的提交中恢复一些图像(将它们从“原始”状态转换为“正确”状态),但我不认为它是一个回复的事实。然后,注意到我在错误的仓库上做了它,我解除了我刚恢复的(在我开始之前将图像设置为原始状态),而是在“master”/ upstream {{ 1}}。
现在,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
。
答案 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/master
时master
看到了A
以获取最新动态“:
fetch
(顺便说一句,所有这些都是命令行;你运行的任何GUI,你可能必须强制它重新读取底层的git仓库以获取更改。)