我们已经在公司实施了一种git flow工作流程,但并不是每个人都实际使用git flow,所以有一些小问题。这是一个。
一位同事正在开发一个功能分支,需要修复一些当前处于掌握和开发状态的错误。然而,他感到困惑并且合并了他的功能分支而不是主功能,从而获得了许多不需要的功能。他推到了我们的git服务器上。
现在,我看到了他的错误,我们尝试纠正它。我们还原了合并提交
git revert -m 1 hismergecommit
并解除他的合并。然而,如果他试图将主人合并到他的分支中,他被告知没有什么可以合并的!这似乎是因为在他的gaff之前,master已经被合并到了开发中。
图片给出了它的样子。
有没有办法将master合并到他的功能而不重置他的功能分支,直到他的错误合并或樱桃选择了master中的所有提交?
编辑:
我想补充一点,虽然他已经把分支机构推到了服务器上,没有其他人拉过它,所以在这种情况下重写历史并不“危险”,我只想知道是否有如果出现这些问题,这是解决这类问题的好方法。
答案 0 :(得分:1)
让我们在合并之前调用c1提交。您可以尝试将功能分支重置为c1,然后将master合并到功能分支中并推送结果。
git reset --hard c1
git merge master
git commit -am "some stuff"
git pull origin feature_branch
git push origin feature_branch
答案 1 :(得分:1)
重置分支有什么问题?
我已经复制了这样的问题:
git init .
echo line > file
git add file
git commit . -m "added file"
# Create the branches
git branch -t feature
git branch -t dev
git checkout dev
echo dev-line >> file
git commit . -m "added dev-line"
echo test > another-file
git add another-file
git commit . -m "another file"
git merge master
git checkout feature
echo test > feature-file
git add feature-file
git commit . -m "feature commit"
# merge dev into the feature branch
git merge dev
# undo the merge
git revert -m 1 e04d9159fa54aaf06e7329a7799cc58fc3334d34
# Now we have this mess:
* add2b8ea6583c355cc49048b65f07ce697d9c01c Revert "Merge branch 'dev' into feature"
* e04d9159fa54aaf06e7329a7799cc58fc3334d34 Merge branch 'dev' into feature
|\
| * b506d08d62b6434e1383d50eccc26d5a933703e2 Merge branch 'master' into dev
| |\
| | * 18671754b703561587c3875d0f56bd99a2e08c74 another file
| * | 978c2f52d1cd10fc27af2f0a59f295d99ac20e28 added dev-line
| |/
* | ac794379e0a2038822ca772ffb3098b5270f22c2 feature commit
|/
* d416cf0e4a84517871e93e0ac13a60c586353a79 added file
# Now when we try to merge master we get 'Already up-to-date.' This is because master was already merged.
git merge master
imo最干净的方法是在提交之前重置功能分支。
git reset --hard ac794379e0a2038822ca772ffb3098b5270f22c2
git merge master
* 4fa1459304668ec7b8d61eed052f9161fce02435 Merge branch 'master' into feature
|\
| * 18671754b703561587c3875d0f56bd99a2e08c74 another file
* | ac794379e0a2038822ca772ffb3098b5270f22c2 feature commit
|/
* d416cf0e4a84517871e93e0ac13a60c586353a79 added file
然后强行推送到服务器。