因为我想保持每个拉取请求一个提交
- 从分支
feature
签出并做一些工作。 - 工作完成。I
stash
我的代码,pull
新的代码从origin/master
得到最新的版本。 git stash apply
带回工作并解决冲突。git commit --amend -m "New message"
.git push origin feature
.
然而,Github拉请求合并feature
到main
仍然显示相同的冲突当本地代码被存储到主代码。在这种情况下,我应该做些什么来启动并运行所有内容,同时只提交一次?
提前感谢。
我认为这是因为你覆盖了合并提交。
例子假设你有一个main
分支和一个feature
分支。
# main branch
* 6ce0740 - This commit only exist on main
* b82d267 - Another Commit
* e168387 - Initial Commit
# feature branch
* 1a6ac14 - This commit only exist on feature
* b82d267 - Another Commit
* e168387 - Initial Commit
当你在feature
上运行git merge main
之后,我们将有这个提交历史。
# feature branch
* ae70e9a - Merge branch 'main' into feature
* 6ce0740 - This commit only exist on main
* 1a6ac14 - This commit only exist on feature
* b82d267 - Another Commit
* e168387 - Initial Commit
在这一点上,合并feature
到main
只需要一个简单的快进提交。
但是,你说你在push之前把所有的提交压缩成一个。这可能会导致冲突,因为git现在必须比较这两个分支,而不仅仅是移动HEAD指针。
结论
如果你想保持提交历史干净,最好的选择是使用GitHub或GitLab的"合并和压缩";特性,当你决定合并到main
时,它将把所有提交压缩成一个。
git pull origin main --rebase
# squash commit by git rebase -i or something
git push --force-with-lease