重新合并之前已经恢复的github分支

时间:2015-09-18 03:19:01

标签: git github merge

我有一个分支(比如branch_a),合并到master。但在我合并之后,我发现我现在必须恢复做一些数据库更新。数据库更新后,我将再次合并它们。

我的问题是我有一个包含新文件和更改文件(恢复文件)的分支但是当我尝试提交它时总是说不提交。

如何重新部署同一个分支?

3 个答案:

答案 0 :(得分:1)

这不是--reset将解决的问题。 OP的问题是他合并了一个分支,然后使用git revert来恢复合并的效果。 git revert引入了一组新的提交,它们反转了恢复的提交的效果,将原始提交保留在分支中。

如果您再次尝试重新合并同一分支,则会出现此问题。提交已存在于您的目标分支中(即使它们已被后来的返回无效),因此git merge拒绝第二次合并它们 - 它们已经存在。

但是,如果您要合并的分支上的提交具有新哈希值,则它们似乎是新提交并将根据需要进行合并。有几种方法可以实现这一目标。例如,git cherry-pick实际上使用新哈希创建了新提交。你可以创建一个新的分支,挑选你想要的提交,然后将它合并到master。

Cherry-picking多次提交:How to cherry-pick multiple commits

有关详细信息(包括官方解决方案,而非我相当hack):Re-doing a reverted merge in Git

答案 1 :(得分:0)

重置更改或恢复数据库更新的最快方法。

  

git-reset - 将当前HEAD重置为指定状态

Git Docs:     git reset --hard ORIG_HEAD

并检查

git log

任何重新提交的提交消息。

我猜,你无法提交更改的原因是什么?你可能已经跳过了git add .。见post

答案 2 :(得分:0)

回到最近的提交,然后在分支中合并。要查看您的git提交历史记录:

$ git log --oneline --graph --decorate --all

这将为您提供一份提交列表。在合并之前立即复制提交短代码(比如它是ABC123)。只需输入

即可

$ git reset ABC123

这会让你回到合并之前的位置。如果这不起作用,谷歌" git reset --hard"。确保硬盘重置的工作原理正常。如果是,请输入:

$ git reset --hard ABC123

但是$ git重置ABC123应该为你做的伎俩。祝你好运