我有一个分支(比如branch_a),合并到master。但在我合并之后,我发现我现在必须恢复做一些数据库更新。数据库更新后,我将再次合并它们。
我的问题是我有一个包含新文件和更改文件(恢复文件)的分支但是当我尝试提交它时总是说不提交。
如何重新部署同一个分支?
答案 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应该为你做的伎俩。祝你好运