首页 > 解决方案 > 不记得以前还原的合并过程的 Git 命令

问题描述

以下是我想要实现的目标的描述:

我在我们的 git repo 上有一个 master 分支。

每个月都有一个日期,我在“辅助”分支上完全复制主分支代码。我们的意图是用主代码(如硬拷贝和替换)完全替换二级分支。我不需要保留辅助分支上的任何代码。

完成硬拷贝和替换后,我将从“辅助”分支中删除我不需要的提交列表。

下面是多个周期的样子:

1)8 月每月合并(从主到辅助)日:a)硬拷贝并用主分支代码替换辅助分支。b)从辅助分支中删除提交列表(我为此使用了 git revert 命令,这导致了问题;稍后会详细介绍)

2) 9 月每月合并(从主到辅助)日:a) 硬拷贝并用主分支代码替换辅助分支。b) 从辅助分支中删除提交列表

我在每个周期都遵循以下 git 命令:

在主分支上:

    1.    git fetch
    2.    git checkout secondary
    3.    git branch --set-upstream-to=origin/secondary (only the first time after the branch is created)
    4.    git fetch origin
    5.    git reset --hard origin/master
    6.    git status
    7.    git commit -a
    8.    git status
    9.    git push origin secondary
    11.  git revert 10d3ed335687ef5925c40bd723c81688b7b532c0
    11.  git revert 8e6cb3c361cb415f60d12b26ac547929ec2311de
    12.  git status
    13.  git push origin secondary

这个过程的问题是:理想情况下,我不希望在 8 月周期中完成的 git 还原在 9 月周期中被记住或兑现,因为我打算用 master 完全硬替换二级分支。但是,正如观察到的那样,情况并非如此。在前一个周期中完成的还原也会在下一个周期中被记住(我不想发生这种情况)。

所以,看起来 git revert 不是我们要求的正确命令。

你能建议我们正确的 git 命令和步骤来实现我们的要求吗?

标签: git

解决方案


这里的问题是将git reset --hard origin/master您的本地分支重置为origin/master当前指向的提交。您甚至可以使用git push -f origin secondary. 但是,您团队中任何其他先前已拉取过的人secondary都会保留该分支上最初存在的相同历史记录。当他们这样做时git pull,他们只会将修改后secondary的分支从中央仓库合并到他们的本地仓库中。之前的还原仍然保留。

要解决此问题,他们可以执行以下操作:

git fetch
git checkout secondary
git reset --hard origin/secondary

但是,这似乎是一个奇怪的部署工作流程。您在评论中的示例表明您需要对项目进行配置,以便在不更改任何代码的情况下部署到不同的环境。


推荐阅读