以下是我要实现的目标的描述:
我在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命令和步骤来满足我们的要求吗?
答案 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
但是,这似乎是一个奇怪的部署工作流程。注释中的示例表明,您需要对项目进行配置,以便无需更改任何代码即可将其部署到不同的环境。