一位朋友做了「git reset --hard origin」,之後推動了他的改變。他這樣做,而不是去「git reset --hard origin/branch_name」,這是他的實際意圖。「git reset --hard origin」實際上做了什麼?
我認爲所有「git reset --hard origin」都會重置您的分支以完全匹配所有相關的遠程分支。然而,在他推送之後,我做了一個「git pull origin branch_name」,由於某種未知的原因,我拉了一大堆似乎來自主服務器的新文件(例如,如果有主合併)。但是在本地和遠程日誌中,我們從來沒有看到這些文件被提交,或者從主服務器到我們分支的任何合併,我們只知道這個問題是在推後發生的,並且不知道實際發生了什麼。
我傾向於不同意:'git reset'沒有達到遠程,它只是使用定義的規則集解析被解析的修訂版本的名稱(請參閱我的答案)。在完成'git fetch origin'後,只會有一堆以'.git/refs/remotes/origin'命名的參考文件,以該遠程分支命名,沒有'HEAD'或類似的東西。因此,在本地我們並不知道什麼是當前默認的「origin」分支。 – kostix