Git重置原点/主节点

时间:2018-11-21 22:22:32

标签: git ubuntu

我有两台服务器。一种用于开发,另一种用于生产。两者都在Gitlab中。我一个人工作,现在弄乱了我的git来源。

在开发服务器中:

  1. 我创建了一个新分支,并使用commit进行了一些更改。不需推送
  2. 然后在同一分支中,我又做了另一次提交进行了其他更改。
  3. 上次在同一分支中,我通过另一次提交进行了其他更改。

但是我犯了一个严重的错误。第三次提交后,我推送并与原点合并。这是错误的,因为我只希望最后一次提交与origin合并。所有其他都在测试。虽然我可以并行处理这些,但可能是用错误的方式完成的。

现在,当我在生产服务器中尝试进行更改时,我将获得所有三个提交。

在生产服务器中,我有一个名为“右分支”的分支,一切正常。 我想要的是将此分支克隆到原始主机,并将原始拉到开发服务器,以便我可以再次开始。 我该怎么办?

2 个答案:

答案 0 :(得分:0)

G。 ,我认为您可以使用'git log'命令并检查分支上的先前提交。然后,您可以复制提交头ID并使用'git reset --hard commitHeadId'回滚先前的版本(所有这些提交之前的版本)。然后,您可以忽略先前的更改,并使用本地历史记录仅添加第三次提交更改,或者与分支进行比较,然后提交并推送。

答案 1 :(得分:0)

我设法解决了这个问题,而没有丢失任何文件。 首先在生产服务器上,可以在分支中运行:

  

git push origin --force

这用具有“好”文件的分支覆盖了我的起源,而我需要。

然后在我的开发服务器中运行:

  

git checkout master

切换到主分支,然后运行:

  

git pull

从源中提取所有新文件。 这给了我开发所需的东西。一个全新的开始,而不会失去其他“测试”分支。

然后,我又回到生产服务器来修复本地master分支。 我跑

  

git checkout master

     

git pull

这些也像以前一样给了我一个新的“固定”主分支。

现在我在git master分支中拥有两个相同的服务器,并且我可以继续使用开发服务器中的新分支,将它们合并到远程源,以便可以将它们拉入生产服务器master分支中。