在git中有一个功能分支,并且在从另一个分支恢复合并后无法合并master

时间:2013-05-28 20:33:31

标签: git git-merge git-flow

我们已经在公司实施了一种git flow工作流程,但并不是每个人都实际使用git flow,所以有一些小问题。这是一个。

一位同事正在开发一个功能分支,需要修复一些当前处于掌握和开发状态的错误。然而,他感到困惑并且合并了他的功能分支而不是主功能,从而获得了许多不需要的功能。他推到了我们的git服务器上。

现在,我看到了他的错误,我们尝试纠正它。我们还原了合并提交

git revert -m 1 hismergecommit

并解除他的合并。然而,如果他试图将主人合并到他的分支中,他被告知没有什么可以合并的!这似乎是因为在他的gaff之前,master已经被合并到了开发中。

enter image description here

图片给出了它的样子。

有没有办法将master合并到他的功能而不重置他的功能分支,直到他的错误合并或樱桃选择了master中的所有提交?

编辑:

我想补充一点,虽然他已经把分支机构推到了服务器上,没有其他人拉过它,所以在这种情况下重写历史并不“危险”,我只想知道是否有如果出现这些问题,这是解决这类问题的好方法。

2 个答案:

答案 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

然后强行推送到服务器。

相关问题