如何使用git取消提交更改

时间:2012-12-28 10:29:13

标签: git version-control git-flow

我正在使用git flow,并且没有想到,我已将代码提交到错误的分支(功能),然后发布它。

我需要接受该代码,将其从分支1中删除,然后将其移动到正确的分支,即分支2。

所有文件都存储在一个文件夹中,这可以让事情变得更容易,我只是不确定如何解决这个问题。

例如

Branch 1 { 
  Commit That contains {
     ./path/to/files_that_should_be_here
     ./path/to/files_that_need_to_be_in_branch_2
  }
}

Branch 2 {
   No Commits.
}

3 个答案:

答案 0 :(得分:5)

如果您尚未发布更改,最简单的方法是终止branch1中的最后一次提交(注意:这将完全杀死最后一次提交引入的任何内容):

git checkout branch1
git reset --hard HEAD~

然后结帐以更正分支并在那里提交更改。

如果您已发布更改,您仍然可以终止上次提交,但是您必须git push --force,您可能无权执行此操作,即使您这样做,也可能会导致很多悲伤对于此存储库的其他用户。

相反,你应该简单地恢复糟糕的变化:

git revert <bad_commit>

并在正确的分支中重做。

答案 1 :(得分:1)

将提交移动到右分支使用

git cherry-pick commithash

在要移动的分支中提交。

并从该分支中​​删除提交 使用

git reset --hard HEAD~1

答案 2 :(得分:0)

git reset --soft HEAD ^将修改后的更改保留在工作树中。

git reset --hard HEAD ^取消提交所做的所有更改。