用于合并过程的Git命令,它不记得以前的还原

时间:2019-07-29 23:06:03

标签: git

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

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

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

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

下面是多个周期的样子:

1)八月每月合并(从主要日期到次要日期):     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

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

因此,看起来git revert不是满足我们要求的正确命令。

您能建议我们正确的git命令和步骤来满足我们的要求吗?

1 个答案:

答案 0 :(得分:3)

这里的问题是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

但是,这似乎是一个奇怪的部署工作流程。注释中的示例表明,您需要对项目进行配置,以便无需更改任何代码即可将其部署到不同的环境。