GIT Rebase 一个协作的分支?

标签 git merge rebase remote-branch feature-branch

阅读本文后, 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/

相关文章:

javascript - 如何合并包含符号的javascript对象?

Git rebase 失败,因为 : Commit xxxx is a merge but no -m option was given

带有 Windows 客户端的 ubuntu 机器上的 Git

git - Docker 从 git repo 运行命令?

git - ssh 服务器如何知道哪个公钥与 ssh 私钥相匹配?

python - 如何在 Python 中合并两个 json 文件?

sql - 跳过/忽略/不插入重复行

git - 在shell脚本中获取git返回值

git - 压缩 git 历史的前 N ​​次提交/保持其余部分不变

git - 为 ‘devDependencies’ 和 ‘dependencies’ 指定不同的 Yarn 安装路径