git - 使用 git rebase 将提交移动到新分支
问题描述
我在 Git 中的分支上苦苦挣扎,未能正确地将它们归因于提交。最新的两个提交最终在不同的分支中(一个在 master 中,一个在 pm/gitrev 中) - 但需要它们都在同一个功能分支中彼此之上(例如,新的东西,如 pm/git-version)我可以推送到远程存储库“pm”,这样我就可以在 GitHub 上为 origin/master 创建一个适当的拉取请求。
我目前的历史完全是线性的,看起来像:
$ git log --graph --pretty=format:"%h %d %s %n" -4
* 02f82ee (HEAD -> git-version, pm/gitrev) Fail gracefully when operating on detached head
|
* 998d969 (pm/master, master) Change: Adopt the versioning scheme now with git
|
* c95db24 (origin/master, origin/HEAD) Added tag 0.4.5 for changeset e115586dd0a0
|
* 3418735 (tag: 0.4.5) Update: Changelog for release
我创建了一个基于 998d969(主)的新分支,并将其他两个重新基于它,例如通过git rebase -b master git-version
. 然而我的历史是线性的,但提交并没有像假设的那样改变他们的分支。
我想念git rebase
什么?如何根据 origin/master 从最顶部的提交中删除所有分支信息并将它们移动到他们的联合但新分支?
我可以重写远程 repo 'pm' 的历史记录。
解决方案
要将提交移动到其他分支,您可以使用以下命令git cherry-pick
:
git cherry-pick <commit-hash>
您可以在原始提交分支的日志中获取提交哈希:
git log
推荐阅读
- android - android将标记添加到谷歌地图
- tmux - Tmux:将密钥发送到特定窗格,即使在更改布局之后也是如此
- mlflow - Kedro-mlflow 用法 - 何时从笔记本使用它,何时从 kedro 管道使用?
- c# - 用于 Azure 服务总线的 ServiceBusClient - 像 HttpClientFactory 一样重用 tcp 连接
- python - 在嵌套的 for 循环中枚举内部增量的列表理解
- android - 无法为 gradle build android studio 类型的对象获取未知属性
- python - 输入验证并将元组列表转换为 txt 文件
- angular - 错误:FlatpickrModule 类型没有“ngModuleDef”属性
- php - 我有一个问题: session_start(): Failed to read session data: user (path: N;C:\xampp\tmp) in C:\xampp\htdocs\Sessions\index.php on line 79 array(0)
- lms - 包不包含活动 ID 或启动文件