Git在合并之前组合提交

时间:2016-09-21 18:59:31

标签: git github version-control merge

我在一家名为blaBla的分公司工作。 master获得了其他人的大量提交。为了与主人保持更新blaBla,我经常使用git pull master并将其合并到blaBla中。但是这让我的分支混乱了大量的提交。我想将master中发生的所有 new 提交合并为一个,然后将其合并到我的分支中。所以当我git log时,我只看到属于该分支的提交和那些单一的merge-commit。没有别的

2 个答案:

答案 0 :(得分:1)

  

我想将master中发生的所有新提交合并为一个,然后将其合并到我的分支中。

你真的不想这样做。将master更改引入功能分支的唯一合理选项是:

  1. 在不压缩其提交的情况下执行正常git merge master,以便Git可以告诉您的功能分支与master具有哪些共同提交(否则您可能会遇到大量的合并冲突)。否则,您压缩的合并提交中的所有新更改似乎都是您新功能的一部分 - 不是很好。

  2. 执行git rebase master重播您master的最新更改分支机构的更改。这是我首选的工作流程,因为它会将您的更改构建为自master"以后的更改。无论你从哪个master开始,但它都带有重写历史的所有常见风险(例如,如果你要git push --force转到其他人所依赖的分支,请非常认真地沟通)

  3. 更新以反映已接受的答案:或者,更改您对提交进行可视化的方式。 git log --first-parent将隐藏合并到当前分支的提交。虽然通常用于可视化master(已合并的功能分支),但它也可以排除已合并到功能分支中的master提交。

答案 1 :(得分:0)

似乎有几种方法可以做到这一点,但如果您只是在本地执行此操作,它可能会使您的更改更难掌握。 Git真的不喜欢历史重写吗

Here is a good answer on using git reset --soft