git - 用 git 清理混乱的分支
问题描述
我似乎把一个小项目的开发分支弄得面目全非。我现在想要实现的是告诉 git 以下内容:嘿 git。这是名为 X 的分支。现在我在名为 Y 的分支中,它基于 X。请查看有什么区别,在一次提交中提交它们,然后也更新源。
背景:该项目位于 gitlab 存储库中。有一个名为 development 的开发分支(适当地),我正在修改它(分支,比如 january_dev)。现在由于不幸的情况,最好的描述是“我完全不知道我在做什么”,我已经搞砸了那个分支的历史。
不久前,我将我的 january_dev 重新定位在开发上,这意味着目前除了一个来自开发分支的提交之外,所有其他提交也都在我的分支中。
目前,在开发中重新定位分支的尝试最终会重播 january_dev 提交的整个历史,结果是一团糟,因为我工作了很多,在概念之间来回切换等等。所以,基本上,我不我对解决冲突没有信心。我想要的只是保持现状,重新基于“开发”,理论上这应该很容易,因为文件中只有两行代码我什至没有触及需要从开发到我的分支。
我知道我可以做的,并且我认为它会起作用的,将是:
- 基于开发分支创建一个新分支。称之为 january_dev2:
git checkout -b january_dev2 && git push
- 从 january_dev 复制我一直在处理的文件。只有几个。
git commit -a -m 'a new beginning'
git push
- 将 january_dev2 重命名为 january_dev:
git branch -m january_dev2 january_dev ; git push origin january_dev ; git push origin -u january_dev ; git push origin --delete january_dev2
然后我会放弃我的提交的整个历史,但我不在乎,也不需要它们。
你怎么看?
解决方案
这是名为 X 的分支。现在我在名为 Y 的分支中,它基于 X。请查看有什么区别,在一次提交中提交它们,然后也更新源。
git switch Y
– 切换到您要保存的分支(您已经这样做了,但以防万一)。git switch -c tmp
– 创建一个名为tmp
以防万一的新临时分支。git reset X
– 将您的分支指向与从分支保留工作树时tmp
相同的提交。X
Y
git add . && git commit
– 记录单个提交之间X
和中的所有更改。Y
因此,现在您的X
andY
分支保持与以前相同的状态,但是,此外,您还有一个名为的新分支tmp
,它本质上是+ 一个包含andX
之间差异的提交。X
Y
从您的描述中不清楚您想将什么推送到哪里,但是,根据您的需要,您现在可以执行或者git branch -f X
相应git branch -f Y
地更改您的X
orY
分支,使其与tmp
. 然后你就像switch
往常一样,push
随心所欲。完成后,您可以git branch -D tmp
。
推荐阅读
- azure-data-factory-2 - 如果内容包含 \n 使用 ADF,如何避免换行?
- html - 在固定标题中对齐图片和 NAV 部分的问题
- node.js - ForbiddenError: 无效的 csrf 令牌登录和注销身份验证
- cucumber - net.masterthought.cucumber.ValidationException:未添加报告文件 - 错误
- angular - 将声音云与 Angular 8 集成
- python - 与 for 循环的输出串联相关的查询
- ios - 如何删除Xcode中类的arraylist中的重复项
- python - 为什么 python Celery 在尝试通过 TLS 连接到 RabbitMQ 时尝试使用 SSLv3 身份验证?
- saml-2.0 - 仅使用公钥的 CER 证书
- python - 正则表达式查找未跟随某些字符的数字