我想撤消我對本地回購和Github上的回購文件所做的最後更改。 (origin
)撤消git上次提交推送
有人可以請我指向一個職位/博客做這件事。
這裏是我做了提交更改的步驟:無論在我的本地回購和起源
git add -A
git commit -m "changed header"
git push origin master
我怎樣才能撤消上次的變化。
我想撤消我對本地回購和Github上的回購文件所做的最後更改。 (origin
)撤消git上次提交推送
有人可以請我指向一個職位/博客做這件事。
這裏是我做了提交更改的步驟:無論在我的本地回購和起源
git add -A
git commit -m "changed header"
git push origin master
我怎樣才能撤消上次的變化。
做一個硬復位拋出了不好的承諾:
git reset --hard HEAD^
力推
git push -f origin master
注:reset --hard
是要扔掉的任何改變你在最近的提交中進行,除非你仍然有一個分支保持對該提交的引用。不過,前面的HEAD
仍然會在reflog中,以防短期內需要它。是非常安全的,做一個備份支路的第一:
git branch backup master
如果一切順利的話,你可以git branch -D backup
以後。
我寧願做git revert HEAD
,git push origin master
,除非有充分理由使用reset
。
不推薦修改已經推送的提交或遠程分支的歷史記錄。如果你這樣做,你可能會搞砸其他人的工作,或者至少使他們更難將其工作集成到遠程分支(在這種情況下爲origin/master
)。
一種撤消你所承諾的而不是玩origin/master
的歷史的方式是通過創建一個新的提交來解除你以前所做的,然後推送新的提交。
首先,創建一個包含你過去所做的更改相反提交補丁:
git diff HEAD HEAD~1 > revert.patch
通過發佈命令你告訴Git的創建描述如何得到一個補丁文件從HEAD到HEAD_1(即:到最後一次提交的前一個到最後一個提交)。
然後,您應用補丁:
git apply revert.patch
將應用這個補丁並修改你的工作副本中的文件。您現在可以刪除修補程序文件(revert.patch
)。
現在您的工作副本已恢復到上次提交之前的狀態,但這些更改尚未進入Git回購。您必須添加並提交它們。 (使用git gui
或git add
/git commit
或者您通常用於提交更改的任何方法)。
一旦你新的提交已經產生,只要它推
git push origin master
現在你將有
A' (master) - (origin/master)
|
B
|
A
哪裏A'
是新提交您生成,包含相同的文件作爲提交你想恢復到(A
)
這應該與一個關於丟失數據的大紅色警告來。 –
雖然這看起來就是OP所要的。我會添加一些要清楚的。 –
@MattBall:丟失數據?我只是在這個提交中改變了一行,我想撤消。我希望該行能夠恢復到以前的狀態,而不會發生任何其他事情。 –