2017-01-13 131 views
0

我已經對本地存儲庫提交了很多更改,但是我只想推送其中的幾個。可能嗎?我有一個列表(推之前)與我的所有更改,但我只需要推少數。我想從我的本地Repostitory恢復所有這些更改。我創建了只有我想推動的更改的補丁,但現在我無法從本地回購中刪除更改。 我試圖使用git reset hard,但它不起作用,因爲我想。Git - 恢復從本地存儲庫提交的更改

+0

可能的複製[你怎麼推只有一些本地的git的承諾?(http://stackoverflow.com/問題/ 604399 /你怎麼做只推一些你的本地git提交) – sigy

+0

也相關:[git - 推特定的提交](https://stackoverflow.com/questions/3230074/ git-pushing-specific-commit) – sigy

+0

@sigy我認爲OP的問題是不同的,因爲他們也想改變他們的本地歷史 – Dunno

回答

2

如果你真的,真的只是要刪除不需要的提交,然後做

git rebase -i <sha_of_commit_before_those_that_are_unwanted> 

,然後刪除線,承諾要擺脫。

然而,請記住,這些承諾消失,讓他們回去也許是不可能的。也許可以將這些提交首先推送到臨時遠程分支,或者與他們一起建立一個本地分支?

現在你已經擺脫了您提交的,你可以做一個簡單的git push origin branch

+0

那麼,如果我創建了一個臨時分支並將本地存儲庫中的更改提交到此分支,而不是解決問題,那麼我是對的嗎?這是一種安全的方式,我認爲。 – allocer

+1

@allocer是的,使本地分支也將保留您的提交。我只是更願意推送到遠程以獲得更多安全 – Dunno

+0

我創建了新的本地分支,將所有更改推送到主分支並打開推送窗口。當地的變化仍然像以前一樣。如何解決這個問題? – allocer