2012-12-28 31 views
4

我正在使用git流程,並且沒有想到,我已將代碼提交給錯誤的分​​支(功能部件),然後將其發佈。如何使用git取消提交更改

我需要的代碼,比如從,支路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. 
} 

回答

1

移動承諾在您想要移動提交到分支右支使用

git cherry-pick commithash 

並消除從該分支 使用

git reset --hard HEAD~1 
+2

這並不能解決問題,因爲重置只發生在本地存儲庫上。提交和推送的文件仍然在分支中的一個遠程存儲庫中。 – LopSae

+0

你總是可以使用'git push origin branchname'將更改推送到遠程分支上 – amitchhajer

5

如果您尚未發佈的更改,要做到這一點最簡單的方法就是最後殺死犯branch1(注意:這將徹底殺死任何一次提交已推出):

git checkout branch1 
git reset --hard HEAD~ 

然後結帳以糾正分支並在那裏提交您的更改。

如果您已經發布的變化,你仍然可以殺死最後一次提交,但隨後你將不得不git push --force,你可能沒有權限做的,即使你沒有,它可能會導致其他用戶的很多痛苦這個倉庫的。

相反,你應該簡單地恢復不好的變化:

git revert <bad_commit> 

,並在正確的分支重做。

+0

它公佈了提交,那麼你有什麼建議? –

+1

如果你是唯一的用戶或其他用戶很少,並且自從你提交以來沒有人提交任何內容,並且你有權限'git push --force',然後殺掉最後一次提交和推送。否則,你別無選擇,只能使用'git revert'或其他提交來恢復你的不良提交 – mvp

+0

的影響,這將與git流協同工作嗎? –