2017-06-28 85 views
1

正如你可以在圖片中看到的,我是在功能forum_kolo_3工作,我決定完成該功能,並把它合併開發(但沒有推更改遠程開發,所以它只是局部改變),比我意識到它是一個壞主意,現在我想要移除這個合併,就像它從未發生過一樣。GitHub恢復或重置?

在這裏描述,類似的情況:git revert not allowed due to a merge but no -m option was given

但是我不能肯定現在要做的,推翻或重置什麼? 我想撤銷我剛剛做的合併。

我也發現了這個How to revert Git repository to a previous commit?

混帳恢復--no提交0766c053..HEAD

git的承諾

這似乎是一個更好的主意......但我有無頭緒

sourctree

+0

是的,我相信它的重複 – Honza

回答

1

只需在合併之前查找開發分支的最後一次提交,然後將您的git歷史記錄重置爲該提交。

git reset --hard <pre_merge_last_commit_id> 

您可以使用圖形化工具,如gitkgit log --oneline --decorate=full --graph找到最後提交的開發分支。

注意:確保你不恢復到最後一次提交的特性分支代替。

1

git revert當你想撤銷已經發表的變化是非常有用的。它基本上還原了另一個提交所執行的更改(刪除添加的行,添加刪除的行,更改後的另一個方向的更改)。

它與「撤銷」操作類似,但它通常發生後,其他提交已經添加到分支,並創造了新的承諾(或多個)。

現在我想刪除此合併,就像從來沒有發生過。

由於您沒有發佈您的更改,所以最好的解決方案是使用git reset --hard

如果您位於develop分支,並且最後一條命令是git merge feature/forum_kolo_3,則運行git reset --hard HEAD^1。它將當前分支(develop)移動到合併提交的第一個父代(即合併之前的位置)。