如何用较早的提交替换远程Git存储库?

时间:2018-11-05 23:36:17

标签: git

我的开发服务器上有三个Git分支,分别称为dev,staging和master。这些分支也都存在于我的远程Git存储库中。我要做的是将登台分支中的代码回滚到一个月前提交的版本,然后将该代码推送到我的远程Git存储库中。我当前的本地暂存分支与远程暂存分支具有相同的代码。我不确定如何将较早的提交推送到我的远程登台分支。

这是我的本地和远程分支机构     git分支     *开发     主     演出

git ls-remote
From git@bitbucket...
<hash1>   HEAD
<hash2>   refs/head/dev
<hash3>   refs/head/master
<hash4>   refs/head/staging

我的本​​地暂存分支包含最新的代码,不需要保存任何新工作。

7a58311是我想回滚的旧提交的哈希值。但是我不想进行硬重置并永久回滚到该提交。我只想暂时切换到它,以便可以将其推送到我的远程登台存储库,并使用这个旧分支重建登台服务器。

git checkout 7a58311
...
HEAD is now at 7a58311... <commit message>

当我尝试将其推到远程位置时,我收到一个错误消息。

git push origin HEAD:staging
! [rejected]
...
Updates were rejected because a pushed branch tip is behind its remote...
...

在这一点上,它说要执行git pull,但是即使在阅读了文档之后,我也不确定如何执行。如果进行拉动,则会收到以下消息:

git pull <remote> <branch>

以下是进行拉动的正确方法吗?我担心会因为弄乱我的仓库而输入它。

git pull refs/head/staging 7a58311
git push

执行上述操作会将我的远程登台分支置于指定的提交位置吗?请记住,我的临时存储库始终是临时的。每次创建新功能时,都会将该功能分支合并到暂存中,然后将其推送到暂存服务器进行测试。如果我的登台服务器测试通过,则将新功能分支合并到dev中,将dev合并到生产中,然后将功能推送到生产中。暂存仅用于测试,但在这种情况下,我想针对旧版本的代码库进行测试。

0 个答案:

没有答案