我为智能列表做了this pull request。它被接受了,我继续我的发展。现在我正在尝试提交新的更改,我的第一个拉取请求中的所有更改都会再次出现在新的请求中,您可以看到here。
我试图拉动原始回购,获取它或者改变它并没有帮助。我遵循this question中给出的建议。
它标志着“这个分支在Sology:master之前提交了27个提交”。但自从我的第一次更改被接受后,我只做了4次提交。
我该怎么办?
答案 0 :(得分:2)
这是因为上游repo的维护者将你的第一个pull请求压缩成一个新的提交,而你继续在“unsquashed branch”上进行开发。打开您的回购历史记录(例如使用gitk)并继续阅读。
最初的情况是这样的:
* 970f363 (your repo) Add spec for #smart_listing <-- last commit in your first pull request
* 098fcfe Add specs for #smart_listing_create
(more of your commits)
* 721817f Ignore some files
* 89e24b6 (upstream repo) Add missing update_list event <-- tip of origin/master back then
* a084fb9 Fix handling unlimited per page
(...)
ljachymczyk将所有提交压缩为一个新提交,然后将其添加到上游存储库中:
* 61cad2d (upstream repo) Feature spec <-- your work squashed into single commit
| * 970f363 (your repo) Add spec for #smart_listing <-- last commit in your first pull request
| * 098fcfe Add specs for #smart_listing_create
| (...)
| * 721817f Ignore some files
|/
* 89e24b6 Add missing update_list event
* a084fb9 Fix handling unlimited per page
(...)
现在,你必须明白Git没有看到单个新提交(61cad2d
)和整个分支(721817f..970f363
)之间的任何连接。即使单个提交引入了与之前20次提交相同的更改,对于Git,这些也是无关的更改。 (并且有充分的理由。)
然后你继续在你的仓库中工作,向那个旧分支添加新的提交:
* 61cad2d (upstream repo) Feature spec
| * 0b14747 (your repo) Refactor #smart_listing_create <-- your new stuff
| * e49c522 Use the controller name by default
| * a1c1a92 Remove the spec directory in dummy app
| * 4128104 Remove gems from Gemfile and add it in gemspec
| * 970f363 Add spec for #smart_listing <-- your old stuff
| * 098fcfe Add specs for #smart_listing_create
| (...)
| * 721817f Ignore some files
|/
* 89e24b6 Add missing update_list event
* a084fb9 Fix handling unlimited per page
(...)
正如您所看到的,所有这些旧提交在上游回购中仍然不存在 - 这就是它们出现在pull请求中的原因。合并,也不“正常”的改变都不会改变这一点。
您的新提交应该是在61cad2d
(压扁提交)之上创建的,而不是在旧分支之上。因此,现在你需要将它们移植到那里。假设单个压缩提交(61cad2d)与您的旧分支完全等效(即git diff 970f363 61cad2d
未显示任何更改),这很容易。在这种情况下,只需做
git branch newstuff 0b14747
git rebase --onto 61cad2d 970f363 newstuff
你应该得到一个newstuff
分支,其中有四个基于压缩提交的新提交。
请注意,如果970f363
和61cad2d
不相等,则可能必须解决合并冲突。这将说明重新定位和压缩已发布的提交是如何导致问题的。