如何在github上正确的提交PR(记录自己的坑)

本文章主要讨论 向一个目标分支多次PR 导致 commit 叠加的问题

首先fork一个工程

解决github提PR,会出现之前的重复commit的问题

这样就会在你的主页出现这个工程,like this:
解决github提PR,会出现之前的重复commit的问题

然后我们要clone这个工程到本地(此处忽略配公钥过程,度娘去),fork之后的代码库我们称作 源代码库

从源分支中创建新分支

根据你要修改的版本分支确定源分支

你要针对哪个版本提PR,那个版本所在分支就是你要作为源分支的分支
本文章主要讨论的 是多次针对同一个分支提PR并且之前的PR还没有被merge的情况!

创建分支

git branch -a                   //查看项目所有分支
git checkout origin/2.0         //切换到你所选择的源分支,视情况而定
git checkout -b yourbranch      //在源分支上新建你所要提PR的分支,每一个PR要新建一个分支

修改代码commit并push

正常操作没啥好说的

git diff --name-only        //查看修改了哪些
git add filename            //添加要提交的修改的文件
git commit -m 'commit info' //创建commit
git push                    //呵呵第一次是不是美滋滋等会儿就有你爽的了(你没看错,我也没写错)

这时候返回到github,打开你fork的工程,你会发现已经他已经智能的发现了你得提交,并询问你是否要提交PR
此处无图,视力正常的应该都能看到。。。会有一个绿色的pull request的按钮,点他!就会进入了编辑PR界面

解决github提PR,会出现之前的重复commit的问题
这里可以看到你得commit只有一个,非常正确

当你再次重复这一过程就会发现commit竟然叠加了!没错,叠加了

之前的commit也存在
解决github提PR,会出现之前的重复commit的问题
这可真叫人头大。

解决方法

在回到源分支新建分支之前进行如下操作

git log                        //查看commit信息,这时候你会发现head停留在你最后一次commit上,这就是问题的原因
git reset head --hard          //找到最原始的head的commitID 然后reset head --hard !!!
git checkout -b yourbranch     //新建你得分支,这样head信息才正确
//修改代码,提commit
git push -f                    //最后一步重中之重,强制提交,不用担心之前的commit会不会消失,亲测只要pr提上去就不会消失!!

最正确的做法应该是这样

//在每次提完PR之后,checkout到源分支上reset head,再push -f
git checkout origin/2.0   //我得源分支
git log                   //查看最初的head
git reset commitId --hard //强制reset
git push -f               //强制提交

这样就能确保每次下次新建分支head与上次的完全没影响!

如果有其他问题,欢迎与我交流 qq:240814476

相关文章:

  • 2022-12-23
  • 2022-03-01
  • 2021-10-19
  • 2022-12-23
  • 2021-12-25
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-04
  • 2021-04-20
  • 2022-12-23
  • 2021-04-16
相关资源
相似解决方案