在我的开发分支上,我进行了一些无法解决的更改,所以我通过两次提交返回,然后分支并在我的新分支上进行了所有相关更改,现在正确执行该任务
我想让开发成为我现在的新分支。
我的想法是我应该以某种方式从开发分支中删除这两个更改,然后合并回来。如果这是正确的方法,我该怎么做?如果不是,我该怎么做才能解决这个问题?
没有其他人在这个项目上工作,所以不用担心这个问题。
答案 0 :(得分:1)
你应该
$ git checkout develop
然后使用交互式rebase删除两个垃圾提交:
$ git rebase -i HEAD~3
删除包含您不再需要的提交的行。
然后使用在新分支上取得的进展更新开发:
$ git rebase new-branch
最后清理:
$ git branch -d new-branch
答案 1 :(得分:0)
不要将其视为“删除提交”,而是将git视为提交的树/路径,将git分支视为可以沿着分支/路径移动的标签。当你git commit
时,你正在“成长”树并沿着路径进一步移动git branch标签。您可以使用gitx或git log --oneline --abbrev-commit --all --graph --decorate
自由地将其可视化。
您可以考虑将develop
2提交(reset
)移动到分支新提交然后移动{{1}的道路中的“fork”时要执行的操作下一个不同的提交路径(develop
):
merge --ff-only
您应该刷新gitx或在每个命令后运行$ git status # make sure you don't have an uncommitted changes
$ git checkout develop
$ git tag save # bookmark just in case
$ git branch bad-branch # alternate way to save a bookmark
$ # move develop back two commits, presumably back to where you branched off
$ git reset --hard HEAD^^
$ # move develop down the other branch of commits (marked by new-branch)
$ git merge --ff-only <new-branch>
命令,以帮助您直观地了解正在发生的事情。
git log
选项只是一种安全措施,可确保您只是移动分支标签,而不是实际合并到分支(路径)。