没有未合并提交的新拉取请求

时间:2017-06-09 05:42:00

标签: git github

我在存储库上有一个pull请求。提交仍然没有合并。现在,我想提出另一个拉取请求,完全独立于前一个请求。当我创建一个新的分支并进行新的提交时,所有未合并的提交也与新的一起提交!

我想创建一个没有未合并提交的新拉取请求。请帮助我如何做到这一点,因为我是git的新手:)

3 个答案:

答案 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)

您可能不是从主人创建分支,而是从最近的功能分支创建。 要从您的主人分支,您必须先检查主人。

这就是我要做的。

0。示例项目设置和工作流程

(1)fork on github(2)克隆原点到你的计算机(2)将你的fork添加为远程。 (3)将新分支推入您的分支。 (4)从你的前叉向原始主人提出拉动请求

查看github workflow作为经过良好测试的方法的示例。

1。保持本地主人与原点同步

回到你的主人

git checkout master

将它同步到原点通常是个好主意

git pull origin master

确保一切都像预期的那样

git log
git status

2。主人的分支

现在创建分支

git checkout -b new_branch

3。将提交添加到您的分支

现在查看原始分支中的提交

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

4。清理旧分支

现在您可能想要清除旧分支的提交。

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"

当您从上一个分支创建新分支时,所有更改都将在新分支中进行