題 如何將'master'重置為'origin / master'?


我可以用更簡單的方式執行以下操作嗎?

git checkout origin/master
git branch -D master
git branch master
git checkout master

169
2018-04-20 10:34


起源


有時,這可以在不觸及工作樹的情況下完成: stackoverflow.com/a/12343727/586086 - Andrew Mao
請更新您接受的答案:@ KindDragon的答案是更正確且更短。 - Robert Siemer


答案:


KindDragon回答 提到,你可以重新創造 master 直接在 origin/master 有:

git checkout -B master origin/master

git checkout 手冊頁  提到:

如果 -B 給出, <new_branch> 如果它不存在則被創建; 否則,它被重置。這是交易的等價物

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

最初建議:

就像是:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

第2步是可選的。


229
2018-04-20 11:22



你可以用一行來做到這一點。 - Robert Siemer


Git支持這個命令:

git checkout -B master origin/master

看看 origin/master 分支然後重置 master 那裡的分支。


74
2017-08-24 19:30



唯一真實的答案。 - Robert Siemer
保存四次擊鍵 - 你不需要引號。只是:git checkout -B master origin / master - zumalifeguard
讓我說我提交了兩件事,第一件是合併分支,第二件是常規。如果我回到原點/主人,合併會發生什麼? - utdev
你不必 git fetch origin master 之前要確定 origin/master 更新了? - pedrozath
是的,當然有你應該做的所有解決方案 git fetch 第一 - KindDragon


我認為即使VonC的答案與此選項相比也具有復雜性:

git update-ref refs/heads/master origin/master
git reset --hard master

git自動記錄ref的每個值(通過reflog)。那麼在運行該命令之後,那麼 master@{1} 指的是master的先前值。

VonC的答案是正確的,但它浪費時間檢查出master的舊值到文件系統中。

如果您關心倉庫中的孤立對象,那麼您可以運行 git gc


28
2018-01-23 20:48



聽起來很有趣。 +1 - VonC
我還是得到了 Already on 'master' - yourfriendzak
@yourfriendzak,我忘了在更新master之前考慮到你可能已經簽出了master。我已經更新了答案,即使在這種情況下也應該有效。 - Alexander Bird
即使您不在master上(例如實際指向tip origin / master的分離HEAD狀態),這也可以工作。然後,您可以簽出主人,而無需通過回購翻轉舊文件。大! - Andrew Mao


如果你已經在 master 你可以做以下事情:

git reset --hard origin/master

它將指向當地 master 分支到遙控器 origin/master 並放棄對工作目錄的任何修改。


12
2018-06-25 15:47



並將刪除文件!如果您已創建/編輯了文件,並對它們運行了“git add”,則此命令將刪除它們。被警告。 - Cheeso


你已經是主人了。您想要刪除遠程原點 git pull 沒有做任何事。所以

git remote rm origin

然後,如果您願意,可以將當前存儲庫作為源添加到遠程存儲庫。

注意:如果本地提前遠程,您的解決方案將擦除本地更改!


-2
2018-01-28 03:04



這個答案毫無意義。 - ADTC
這直接誤導,可能會損害人們正在進行的項目。 - Wisienkas
這個不對。我不知道為什麼你有一個upvote。 - Saher Ahwal