执行rebase添加会将主分支提交重放到我的Pull请求中

时间:2016-06-08 16:06:26

标签: git github git-pull

我有一个拉取请求here,当我执行“git rebase”时,它添加了我没有创建的提交到pull请求中。我正在合并的远程branch领先于所有这些提交,所以我不明白他们为什么要进入PR。知道怎么撤消这个,或者将来如何防止这种情况发生?

这就是我做的事情

# Checkout local branch and apply changes
mkdir /home/yaroslavvb/tfimmediate_fresh
cd /home/yaroslavvb/tfimmediate_fresh
git clone https://github.com/yaroslavvb/tensorflow.git
cd tensorflow
git checkout tfimmediate_fresh
# do my modifications
git commit -m "Changes"

# Rebase against main branch
git remote add tfmain https://github.com/tensorflow/tensorflow.git
git fetch tfmain
git rebase tfmain/master

# fix conflicts
git add tensorflow/contrib/__init__.py
git rebase --continue
git pull
# fix conflicts again
git add tensorflow/contrib/__init__.py
git commit -m "Fix merge conflicts"
git push
git push -f

在此之后,我的拉取请求包含我没有创作的主分支中的更改

2 个答案:

答案 0 :(得分:2)

在重新定位时,您在git pull后执行了git rebase --continue

这会将origin / master分支中的新提交与您的本地分支合并,因此在pull请求中包含合并的提交。

重新定位后,您应该将更改推送到您将用于Pull Request的分支。

答案 1 :(得分:0)

每次我重新开始欢迎来到我的生活。希望我们可以通过听奥利维尔而不是拉动来避免这种情况。

但是,好吧,你已经这样做了,现在你已经陷入混乱。做什么?我曾经只是创建一个新的分支,复制我的更改,并制作一个新的公关,但我们不必这样生活。您可以删除提交。

git log会为您提供一份提交列表。然后,您可以使用以下命令获取SHA并删除单个提交:

git rebase -p --onto 4196caae8735bb983a2a0bace6f72b0820a755c1^ 4196caae8735bb983a2a0bace6f72b0820a755c1(注意:如果您使用zsh,则需要反击ˆ。)

一旦你杀了提交,你就不能简单地git push,因为远程分支仍然有那些额外的提交。相反,做潜在危险的git push origin -f来强制远程分支与你的匹配(而不是相反)。

免责声明:我不知道我在做什么。但经过几次尝试后,我通过做这些事情达到了我想要的状态。

git choose-your-own-adventure命令向Seth Robertson "cherry-pitting"道具。