我已将主分支合并到我的功能分支中。但是,提交并不顺利。它搞砸了假设来自大师的变化。 feature branch是提前45次提交,这是最新的4次提交:
现在我需要达成承诺a3aec79。并丢弃在此特定提交后完成的所有提交。
答案 0 :(得分:2)
据我所知,你只需要git reset a3aec79
。如果要放弃工作副本更改,请使用--hard
标志。
如果您已经提前提交了提交,则必须使用git push --force
。在这种情况下,最好还原而不是重置。
答案 1 :(得分:1)
为了安全起见,您可以查看更新的分支。
git checkout -b bug_fix
您可以获取要切换到的提交ID并使用:
git revert <commit_id>
答案 2 :(得分:1)
如果要撤消该合并提交并将功能分支设置回到master合并到它之前的确切状态,那么您可以执行此操作:
git checkout feature
git reset --hard HEAD^
这假定自从您进行合并以来,功能分支中没有其他功能完成。
HEAD^
git cli中的简写符号表示&#34;之前的提交&#34;。在您的情况下,功能分支指向特定的提交。由于我们知道提交是一个合并提交(将master合并到功能分支中),因此我们知道该合并提交的第一个父级将是功能分支的先前状态。 git reset
命令将获取当前分支,并强制它指向另一个提交。因此,我们通过运行上述命令和中提琴来使用这两个事实!你的事业。
答案 3 :(得分:0)
这就是我最终解决这个问题的方法。
步骤1:使用reset hard命令以及要遍历的提交的sha。
git reset --hard <SHAsum of your commit>
在我的案例中,git reset --hard a3aec79c1f47f6d8df95f61236fc212556b5c224
。
如果检查状态,您将在已推送的提交后面找到您的分支。此刻不要拉动变化。
第2步:使用
从当前版本创建新分支git checkout -b new_branch_name
处理新创建的分支上的功能/问题。