git - 单独的 git 提交/拉取请求
问题描述
我最初从 master 克隆了一个存储库并进行了更改。我被告知要创建三个独立的分支,每个分支都有自己的相关提交和拉取请求。完成所做的更改后,我对 3 个分支执行了 3 次以下步骤:
//For branch one
1) git checkout -b branchOne
2) git add file1 file2 file3
3) git commit -m "commit msg"
4) git push --set-upstream origin [branch_name]
//For branch two
1) git checkout -b branchOne
2) git add file4 file5 file6
3) git commit -m "commit msg"
4) git push --set-upstream origin [branch_name]
这样做 3 次后,它创建了 3 个分支,但它们都共享相同的提交历史。提交历史基本上被更新/附加到下一个分支。
我现在需要做什么:
现在我需要分离这些提交,以便已经创建的每个分支都有自己的拉取请求和相关提交。我怎样才能做到这一点?
更新:除此之外,我还需要向一些分支添加新的提交。所以总而言之,我需要将提交分离到它们自己的分支(已经存在的分支)以及向分支添加额外的新提交。
我怎样才能恢复我已经做出的提交,然后只将它们提交到相关分支。
解决方案
用于
git log
查看您的提交历史记录并在更改之前查找提交。记住哈希的前 4-6 位数字。当你在做的时候,还要写下你的 3 个提交哈希的第一个字母。git checkout <hash prior to your changes>
- 您的存储库现在处于最后一次干净的提交,没有您的更改。从这里创建并签出您的功能分支:
git checkout -b feature/feature01
.git cherry-pick <hash of first feature commit>
- 这会在您当前的分支中移动此提交的更改。
您现在在新分支上拥有这些更改,完全是。对每个特征从第 2 步开始重复。
推荐阅读
- android - 如何关闭信息窗口
- javascript - 具有停止和回答问题功能的 JS 视频播放器
- android - 检测到使用圆形对象的opencv ArUco库
- c# - C# Npgsql,支持过程调用?
- laravel - Javascript 向 laravel 控制器发送数据
- kotlin - 是否可以将纯 Java 代码注入 Kotlin?
- java - 如何以编程方式检测项目何时在 RecyclerView 中可见?
- amazon-web-services - 如何在 AWS CodePipeline 中停止执行或为操作设置设置超时?
- r - dplyr:在 group_by() 之后在 summarise() 中使用自定义函数
- javascript - 从烧瓶应用程序中列出 css 和 javascript 路径