与他人合作时,我通常的工作流程是创建一个功能分支,然后让双方都向该分支提交更改。一起工作时,通常会有无意义的提交,例如“嘿,我做了这个小改动,你觉得怎么样?”然而,在我们 PR 并将其 merge 回 master 之前,我会在开始工作之前执行 git reset
回到第一次提交,并将历史拆分为合理且合乎逻辑的 block 。
但是,这次某位同事 merge 到master中,导致我们的历史无法读取。或者至少我现在无法 git reset
因为我们的提交不再是连续的。
我们的分支是 master 的超集,只有额外的提交。我想删除所有这些提交但离开工作,允许我将更改提交到逻辑 block 中。
想法?
最佳答案
对于 future 的人,我发现解决我的问题的最好方法是只对 master 和我自己的之间的差异打补丁,然后将更改应用到一个新分支,然后 PR 那个。这样我可以获得所有更改,但稍微清理一下历史记录。
git diff --binary master my-branch > ../thing.patch
然后
git apply ../thing.patch
我知道我的问题有点靠不住,我的解决方案也是如此。但是,希望这会在将来对某人有所帮助。
关于git重置两个分支差异中的所有提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25268464/