我们有一个共享的远程分支(在这个例子中简称为feature_branch),基于master,几个人正在推送提交。在开发过程中,我们不得不两次从master中合并以获得一些必要的更改。现在几乎是时候将feature_branch的内容传递给master并且出现了一个问题:从master重新安装然后再回到master是否安全?
在示例中,我们已经从master扩展并在feature_branch中完成了一些提交(其他人已将提交推送到master分支):
git checkout master
git pull --rebase
git checkout feature_branch
git pull --rebase
git merge master
然后我们在feature_branch中做更多的工作,其他人推动其他东西掌握。然后再次重复上述过程(因此在feature_branch中共有两个合并提交)。
现在决定停止在feature_branch中工作,现在是时候交付给master了。所有同事都被告知,由于团队很小,每个人都坐在一个房间里,这不是问题。 我们可以这样做:
git checkout master
git pull --rebase
git checkout feature_branch
git pull --rebase
git rebase master
git checkout master
git merge --ff-only feature_branch
git push
这样安全吗?我觉得这可能会导致问题但是当我在本地尝试这个(除最终git push
之外的所有内容)它实际上看起来很好(只有feature_branch唯一提交在master上重播)。但即使它有时有效,是否存在危险或不明智的情况,或者可以将其作为首选工作方式(假设我们有时必须有共享功能分支,要求主人不时合并到其中) )?
只是为了澄清,在这种情况下,我们没有兴趣保留“绝对”历史(因为rebase将重写feature_branch提交的历史记录)来自功能分支,我们只是希望将提交传递给master。
答案 0 :(得分:0)
一般来说,我总是接近的方式是: 1.检查功能分支 2.在主人之上的rebase功能分支 3.在rebase之后你应该看到明确的线性历史 4.然后强制推送该本地功能分支提交到远程功能分支 5.完成后,查看主分支 6.将功能分支合并到主分支并将提交提交到主分区
答案 1 :(得分:0)
这可能很危险。糟糕的情况是,当你修改一个含有"邪恶变化的"evil merge""这与其他提交不冲突。 此更改可以是silently lost while rebasing。