拿一个当前的Git分支并将其内容“重置”给Master

时间:2011-10-17 17:51:28

标签: git

在工作中,每个开发人员都有自己的开发分支,即。 branch = dev_name_of_employee。 IE浏览器。 dev_jon

dev_jon有一个新功能,其中有超过100个提交,尚未准备好进行测试或部署,因此我创建了另一个分支,将该新功能放入名为staging_jon(可以称之为holding_jon,无论如何)。

现在我需要从另一个功能开始并让dev_jon包含master的内容。有点回归到掌握的东西。

如何在不删除dev_jon及其远程分支的情况下执行此操作,然后从master重新创建它?我不能放弃所有这些变化,因为它们已被推动。

或者,在开发过程中,是否有更好的方法让每位员工在他/她自己的一致分支上工作?

3 个答案:

答案 0 :(得分:14)

在dev_jon中,你可以这样做:

git reset --hard master

可能无法直接适用/相关,但您可以查看GitHub流程:http://scottchacon.com/2011/08/31/github-flow.html

答案 1 :(得分:5)

我不认为您当前的模型非常理想,开发人员应该能够同时开发多个功能,因此每个开发人员只有一个分支不是最灵活的。无论如何,在你的情况下,假设dev_jon跟踪origin / master,我会做什么:

git reset --hard origin/master

这也假设你当前在dev_jon分支上。

希望它有所帮助,

答案 2 :(得分:2)

您可以执行硬重置以使您的dev-jon分支与主分支相同,但是当您发布新作品时,您必须要小心。远程分支origin\dev_jon将是您的旧功能,当您来推动时,您将收到如下警告

 ! [rejected]        dev_jon -> dev_jon (non-fast-forward)
error: failed to push some refs to '/tmp/example'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

考虑按照larsmans的建议创建一个功能分支。