我想重置爲特定提交。我使用命令git reset --hard Head~5
這已重置我的本地。我做了一些改變,現在我想推動。但我得到Updates were rejected because the tip of your current branch is behind
。我不想拉,否則我回到最近的提交。我該如何重置?恢復到特定提交但不能推送
回答
您可以強行推送,但這可能存在問題。
有沒有其他人在這個回購工作,或者它只是你嗎?你是否確定要刪除這些遙控器的提交?
git push -f origin branch-name
將更新遠程分支以匹配您剛纔所做的更改。
但是這樣做時你需要小心。如果你有同事在同一個分支工作,你應該告訴他們,以防他們已經進入這些變化。另外他們可能推動了其他你會被壓倒的改變。
你需要做一個git push --force
(並不總是可取的,請閱讀下面)。
如果您無權執行推動操作,那麼這意味着您無法重置提交,而是嘗試使用reverting這些提交。
請注意,如果分支是主開發分支,或者它已經被其他開發者拉動,那麼重置提交併推送它們(不管權限問題)是一件危險的事情,並且git revert
將是更好的選擇。
這是混帳復歸相當於你的榜樣的(git reset --hard HEAD~5
):
git revert Head~5..HEAD
這將恢復提交內容HEAD~4
,HEAD~3
,...,和HEAD
表示。它會保留你現有的提交,然後再增加額外的恢復提交。每次提交將會有1次恢復提交回復,在您的情況下最多會添加5次提交提交。
如果您希望自己管理的提交(例如,恢復他們都在1犯下的,而不是5)使用-n
選項,這樣它會恢復在當地分行的變化而不提交它們:
git revert -n Head~5..HEAD
然後,您將決定在本地分支中提交未完成的更改。
git reset
當您重置尚未推送的本地提交時是安全的。如果您擁有推力許可,並且您確信沒有其他人已提交您將要重置的提交,則可以在本地重置它們,然後執行推動操作。
當涉及到已提交的提交時,git revert
比git reset
更安全,因爲您沒有更改歷史記錄,也沒有刪除已由其他團隊成員提交和依賴的提交。請注意,如果事情在恢復過程中失控(例如,您遇到不確定如何解決的衝突),則您始終可以通過git revert --abort
中止操作。欲瞭解更多信息,請參閱git revert documentation page。
我將如何恢復? – KexAri
@KexAri更新了答案 –
- 1. 暫時恢復到混帳提交併推送到服務器
- 2. 從提交恢復特定文件
- 3. 恢復特定的舊提交
- 4. 恢復丟失提交後推-f
- 5. 如何恢復git中的許多提交以恢復到特定狀態
- 6. 恢復到本地提交?
- 7. 如何部分恢復/修改推送提交?
- 8. 想要恢復我從主存儲庫推送的提交
- 9. 如何不推送給定的提交
- 10. 在github上看不到推送提交
- 11. 恢復git提交
- 12. 使用sourcetree恢復推送到遠程
- 13. git恢復到多個提交之前已經推動
- 14. 不能推到提交叉狀回購
- 15. git恢復已提交的提交
- 16. git:推送單個提交,重新排序,重複提交
- 17. 恢復到git中的特定提交,編譯,然後恢復到最新更改
- 18. 如何使用TortoiseGit恢復特定的提交?
- 19. 刪除或恢復主人的特定提交
- 20. 如何恢復到早期提交
- 21. git恢復到某個提交
- 22. 恢復拉到前面的提交
- 23. 恢復到以前的提交Windows Azure
- 24. 恢復後不能將git推送給主人
- 25. GitHub:恢復舊提交
- 26. Git恢復本地提交
- 27. Git:恢復舊的提交
- 28. 如何恢復SVN提交?
- 29. GIT:恢復上次提交?
- 30. 遠程分支上的特定提交推送
只要我在這個分支上工作。這是主開發部門的一個小分支。 – KexAri
在這種情況下,它將是安全的強制推 – bcmcfc
我是正確的'重置'和強制推抹消除提交歷史,但恢復保持它? – KexAri