无意中忘记合并来自另一个分支的主变更和推送更改

时间:2018-02-13 13:45:40

标签: git

在一行中描述工作流程真的很难。无论如何这是场景:

第1步:我有一个故事要处理,我已从主人那里取出变化,创建了新的分支并切换到:

git pull
git pull origin master
git checkout -b my_story

第2步:完成了一些工作

git commit -am "some changes"
git push origin my_story

第3步:过了一会儿,发现这个分支需要更新。

git checkout master
git pull origin master

此时对master进行了一些更改(其他开发人员的其他分支已合并为master)。

git checkout my_story

步骤5:在此步骤中,我应将本地更改合并到master,但我忘了这样做。

should be: git merge master

我提供了一些改变,承诺和推动:

git commit -am "some new changes"
git push origin my_story

第6步(结果):在我的PR中,我可以看到其他几个文件已更改。提交列表由其他开发人员扩展(这些是应该在我的本地存储库中合并的更改,我忘了这样做),这些更改不应该存在。

问题1:我该如何回滚?

问题2:如何配置本地git存储库,以便它显示其他开发人员添加的git状态更改?如果我获得其他开发人员对git status的修改文件列表,我就不会发生这种情况,我知道这可能是我之前在其他存储库中看到过的。

1 个答案:

答案 0 :(得分:0)

正如评论中已经说明的那样,您所描述的行为对您现在面临的混乱不负责任。要解决此问题,您可以按如下方式使用樱桃选择:

首先,查看混乱的功能分支并复制它:

git checkout my_story
git branch my_story_backup

现在,在my_story分支中,您将一步一步地返回,直到您处于不再有错误提交的位置:

git reset --hard HEAD^1

现在,您逐个应用仍存储在备份分支中的良好提交:

git cherry-pick COMMIT_HASH

因为您现在更改了历史记录,所以您需要强制推送您的功能分支。如果项目中不允许这样做,则需要使用新分支:

git push --force my_story

完成后,my_story分支看起来符合要求,删除my_feature_backup分支:

git branch -D my_story_backup