亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將遠程重置為特定提交

將遠程重置為特定提交

Git
UYOU 2020-02-03 13:57:45
我想放棄commit之后所做的所有更改<commit-hash>。所以我做了:git reset --hard <commit-hash>現在,我想對遙控器執行相同的操作。我怎樣才能做到這一點?之后,我做了一些提交(和推送)<commit-hash>,但我只想丟棄它們。只是方式出了什么問題而已,我不想讓它變得比現在更糟。;(我基本上想倒origin/master帶到<commit-hash>
查看完整描述

3 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

假設您的分支master在這里和遠程都被調用,并且您的遠程被調用origin,則可以執行以下操作:


 git reset --hard <commit-hash>

 git push -f origin master

但是,如果其他任何人正在使用遠程存儲庫并撤消更改,則應避免這樣做。在這種情況下,最好還原不需要的提交,然后按正常方式推送。


更新:您已經在下面說明其他人撤消了您已推送的更改,因此最好創建一個新的提交以還原所有這些更改。在JakubNar?bski的回答中,您對執行此操作的選擇有很好的解釋。哪一個最方便取決于您要還原的提交數量,以及哪種方法對您最有意義。


由于從您的問題中可以很明顯地看出您已經習慣git reset --hard了重置master分支,因此您可能首先需要使用git reset --hard ORIG_HEAD來將分支移回到之前的位置。(與往常一樣git reset --hard,請確保它git status是干凈的,您位于正確的分支上,并且知道git reflog作為恢復顯然丟失的提交的工具。)您還應該使用來檢查ORIG_HEAD指向正確的提交的位置git show ORIG_HEAD。


故障排除:


如果收到類似“ ![遠程拒絕] a60f7d85-> master(預接收掛鉤被拒絕) ”的消息


那么您必須允許為特定分支重寫分支歷史記錄。例如在BitBucket中,它說“不允許重寫分支歷史記錄”。有一個Allow rewriting branch history必須選中的復選框。


查看完整回答
反對 回復 2020-02-03
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

如果您不介意丟失本地更改,請使用其他答案。如果您選擇了錯誤的提交哈希值,該方法仍然會破壞您的遙控器。


如果只想使遠程匹配成為本地分支中已經存在的提交,則:


千萬不能做任何復位。

使用git log找到你想要的遙遠,在提交。git log -p查看更改或git log --graph --all --oneline --decorate查看緊湊的樹。(將最后一個作為git別名非常方便。)

復制提交的哈希值或其標記,或者復制提示的分支名稱。

運行如下命令:


git push --force <remote> <commit-ish>:<the remote branch>

例如


git push --force origin 606fdfaa33af1844c86f4267a136d4666e576cdc:master

要么


git push --force staging v2.4.0b2:releases


查看完整回答
反對 回復 2020-02-03
  • 3 回答
  • 0 關注
  • 569 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號