我在存储库上有一个pull请求。提交仍然没有合并。现在,我想提出另一个拉取请求,完全独立于前一个请求。当我创建一个新的分支并进行新的提交时,所有未合并的提交也与新的一起提交!
我想创建一个没有未合并提交的新拉取请求。请帮助我如何做到这一点,因为我是git的新手:)
答案 0 :(得分:1)
当我创建新分支并进行新提交时
这是您的问题的根源。您应该从当前功能的父级创建一个新分支,然后从那里提交,而不是将提交添加到同一个功能分支。让我们说父分支是master
,功能分支中有3个提交。该图表如下所示:
master: ... A -- B -- C
\
feature: M -- N -- O
当您从feature
创建新分支并开始添加新提交时,您最终得到了这个:
master: ... A -- B -- C
\
feature: M -- N -- O
\
new_ft: S -- T ...
换句话说,feature
的历史是新分支的一部分。相反,您可以使用:{/ p>从B
master
提交中创建新分支
git checkout -b new_feature <SHA-1 for commit B>
现在进行另一组提交,然后第二个pull请求将基本上独立于第一个。
答案 1 :(得分:1)
您可能不是从主人创建分支,而是从最近的功能分支创建。 要从您的主人分支,您必须先检查主人。
这就是我要做的。
(1)fork on github(2)克隆原点到你的计算机(2)将你的fork添加为远程。 (3)将新分支推入您的分支。 (4)从你的前叉向原始主人提出拉动请求
查看github workflow作为经过良好测试的方法的示例。
回到你的主人
git checkout master
将它同步到原点通常是个好主意
git pull origin master
确保一切都像预期的那样
git log
git status
现在创建分支
git checkout -b new_branch
现在查看原始分支中的提交
git log old_branch_with_to_many_commits
所有提交都有哈希值。您可以使用这些数字在您的new_branch中挑选单个提交。因此,将要保留的第一个提交的哈希值复制到剪贴板中。
现在使用git cherry-pick逐一进入new_branch
git cherry-pick a_commit_hash
...
git cherry-pick next_commit_hash
现在您可能想要清除旧分支的提交。
git checkout old_branch_with_to_many_commits
查找要保留的最后一次提交的哈希值
git log
复制哈希以重置分支
git reset --hard hash_of_the_last_commit_you_want_to_keep
答案 2 :(得分:0)
创建Satsh,它将暂时存储您在某个存储中的提交
git stash
然后创建一个新的brnach
git checkout -b "new branch name".
然后通过弹出存储
来获取新分支中的所有提交git stash pop
旧分支中的所有提交都将保存在此处。
或者 如果你想提交并且所有更改也都提交给新分支,那么只需提交该分支中的所有更改并创建一个新分支。
git checkout -b "new branch"
当您从上一个分支创建新分支时,所有更改都将在新分支中进行