【发布时间】:2017-01-07 10:47:06
【问题描述】:
我是 Git 新手,使用 WebStorm 推送和拉取我的代码。我们正在做一个共同的项目。深夜我的朋友更新了一些代码并推送了更改。
今天我提取了代码并合并了更改,但我错误地保留了我的更改并丢弃了拉取请求提供的更改。然后将这些更改推送到 git remote..
所以基本上现在我想要的是:
- 在本地恢复到以前的状态,即拉取请求之前的状态,并且在远程我想要与昨晚相同的状态,即推送请求之前的状态。
所以,这就是我想做的:
- 远程恢复到以前的版本。
- 再次拉码。
- 进行合并。
- 推送新代码。
所以现在我在 Remote 上:
- 我的朋友代码版本提交,
- 然后我的错误版本提交不包括合并之前的代码提交,
- 如果我遵循以下在本地还原然后推送的答案,那么我将提交新的还原代码版本。但最后我想要远程 1 + 3。
让我们从数学上看一下
- X= 我打开计算机并更改代码和
的本地状态 承诺。 - Y= 我的朋友昨晚在他的本地计算机上进行更改并推送到远程的远程状态。
- Z= 远程状态,当我拉出我的朋友代码并开始合并但犯了一些错误并丢弃了我朋友的更改,然后提交并将基本上是状态 x 的代码推送到远程时。
所以,基本上
- 在我的本地我有 Z 州。
- 在遥控器上我有状态 Z
- 在我的朋友当地 Y 州。
我想要远程 X + Y。
【问题讨论】:
-
您不能“推送未合并的代码”。只能推送已提交的代码。从你的问题中不清楚到底发生了什么。如果不知道不需要的 git 命令的确切顺序,也不知道您希望如何解决问题,就不可能给出权威的答案。
-
清理这些乱七八糟的东西(尤其是在其他人不使用的 repo 上)基本上是清理本地分支。您可以重置为旧版本并挑选您想要保留的更改。一旦你的分支看起来不错,你的力量就会推动。这将修改历史,但它也会清理你的耻辱痕迹。如果有人(构建服务器)签出此分支,您可能会擦除/清除工作区并重新开始。
-
@SamVarshavchik 嗨,山姆,我想我犯了一些错误,在合并阶段我只保留了我的代码,因此它推送了我完成的合并代码,其中不包括拉取的代码更改。
-
这仍然是一个模糊的描述,缺乏任何细节。如果没有看到所有执行命令的具体日志,只能给出一个模糊的答案:撤消本地分支中的所有更改,然后将其推送到远程,如有必要,使用
--force。就是这样。 -
@SamVarshavchik 嗨,山姆的问题现在很清楚了。
标签: git