【问题标题】:Cant git push to master after revert恢复后无法 git push 到 master
【发布时间】:2014-11-20 21:05:11
【问题描述】:

我错误地将更改推送到远程主分支。所以为了保证他们的安全,我创建了一个backup 分支。然后我恢复了对远程主机所做的更改。

我在本地主分支上运行:

git revert <commit_sha>

然后

git 推送

我现在已经完成了新分支(备份)的工作,一切看起来都很好。但我无法将本地backup 分支的更改推送到远程主控。当我在备份分支上运行 git pull 时,我所做的更改将丢失。代码替换为远程主机的内容。

有没有办法让我在不丢失工作的情况下将更改推送到远程主分支?

【问题讨论】:

  • 我签出了一个新分支并将它们推送到那里。 这没有意义:您可以签出本地分支,但不能推送到一个。你需要澄清你的问题。
  • @Jubobs 我认为 OP 的意思是他创建了一个“备份”分支并将其推送到他的远程仓库。
  • 然后我恢复了我对掌握的推动”也没有多大意义。你的意思是你恢复了本地master中的最后一次提交,还是你强制推送到远程master分支?
  • 对不起@Jubobs,我的意思是我创建了一个备份分支并按照 isim 所说的那样继续在那里工作
  • 另外,请澄清“我的所有更改都被 master 覆盖了”。

标签: git github push revert


【解决方案1】:

更新

由于您已经在本地 master 分支上执行了 revert 并将其推送到远程,因此您应该在本地 master 分支上进行所有新更改,而忘记 backup 分支。请记住,您的 backup 分支仍然包含以前的那些错误代码。如果你把它推到你的遥控器上,你会引入那些你恢复回来的代码。

原答案

如果你是only person working on that remote repository,那么你应该可以使用

git push -f <remote> <branch>

强制将新分支推送到远程主分支。

为了对术语有所帮助,每个 git 存储库都有一个本地 master 分支。因此,说我将我的更改推送给 master.. 是没有意义的。我们要么推送到远程(默认情况下标记为origin,要么与(本地)主服务器合并

【讨论】:

  • 我不是唯一一个在远程 master 分支上工作的人,有没有安全的方法呢?
  • @user3393708 如果你不是唯一一个在远程分支上工作的人,你不应该从一开始就重写历史记录(通过使用git revert),除非你绝对 200% 确定没有人自从您推送了意外更改后,已经完成了git pull
  • 自从我推送了意外的更改后,没有人做 git pull
  • @user3393708 实际上,我在resetrevert 之间搞错了。如果你使用了revert,那么你就不用担心有人拉了。
  • 既然您已经在本地 master 分支上恢复了错误,为什么不能在那里进行新的更改而忘记备份分支?
猜你喜欢
  • 2021-12-27
  • 2021-05-15
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 2018-08-30
  • 2017-01-05
相关资源
最近更新 更多