git - 不记得以前还原的合并过程的 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 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
但是,这似乎是一个奇怪的部署工作流程。您在评论中的示例表明您需要对项目进行配置,以便在不更改任何代码的情况下部署到不同的环境。
推荐阅读
- jupyter-lab - 如何调试 JupyterLab 服务器扩展
- python - 有没有办法使用变量从 mysql 获取数据并能够在登录系统的 if 语句中使用它
- c++ - 如何从用户那里获取多个数字并将偶数相加并乘以奇数?
- r - 在 R 中重命名数据
- ruby-on-rails - Ruby on Rails:从表单提交更改 JSON
- powershell - 从 txt 文件对每个站点运行 PowerShell 脚本
- python - 为什么要用 FileInput 换行?
- spring-boot - 带有 Jaeger 日志的 Spring Cloud Zipkin
- java - Android Appium - 通过代码扫描 TC25 设备的条码,adb 广播 - 不扫描条码
- ios - iOS 14 有限照片权限