阅读本文后, rebase 以将更改从主分支收集到我的功能分支是有意义的: Git workflow and rebase vs merge questions
clone the remote repo
git checkout -b my_new_feature
..work and commit some stuff
git rebase master
..work and commit some stuff
git rebase master
..finish the feature
git checkout master
git merge my_new_feature
如果特性分支在我的机器本地并且我可以随心所欲地重写历史,这会很好用。
但是,如果我在功能分支上与其他人协作怎么办。既然我们的功能分支保存在远程存储库中,我们如何将最新的更改从主分支获取到我们的功能分支?
所以我们 merge ?还是有另一种灵巧的 GIT 方法来做到这一点?
提前致谢!
最佳答案
如果你是一个人工作,rebases 什么都不做。您没有向 master 提交任何新内容。
您的 merge 将是一个快进 merge ,您可以通过根本不检查它来完成
git push . HEAD:master
无论您是否与某人合作,将 master 中的工作 merge 到您的功能分支中都是一种不好的做法。它被称为反向 merge 。它不好的原因是你现在没有一个原子工作。 master 的历史现在与您的功能纠缠在一起,使得在许多情况下无法使用此功能,例如 rebase 。
您需要考虑您的分支策略以及您想要实现的目标。这是我的:
http://dymitruk.com/blog/2012/02/05/branch-per-feature/
你可以看到每个分支都从同一个地方开始。您有一个单独的集成分支和发布候选分支来混合和匹配您想要的功能,同时不会污染它们。
至于与同事在一项功能上进行协作,这取决于功能的大小(您工作的粒度)。如果它很大,您可以将上述过程应用于功能本身,并改为按任务分支。
如果它是一个小功能,您可以在该分支上 merge 或 rebase - 这无关紧要。在这一点上,它归结为团队对什么感到满意。
关于GIT Rebase 一个协作的分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269746/