替换git中的另一个分支

时间:2013-12-15 01:12:47

标签: git atlassian-sourcetree

在我的开发分支上,我进行了一些无法解决的更改,所以我通过两次提交返回,然后分支并在我的新分支上进行了所有相关更改,现在正确执行该任务

我想让开发成为我现在的新分支。

我的想法是我应该以某种方式从开发分支中删除这两个更改,然后合并回来。如果这是正确的方法,我该怎么做?如果不是,我该怎么做才能解决这个问题?

没有其他人在这个项目上工作,所以不用担心这个问题。

2 个答案:

答案 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选项只是一种安全措施,可确保您只是移动分支标签,而不是实际合并到分支(路径)。