說的遙控器是origin
和分支是master
,說你已經有master
簽出,可以嘗試以下操作:
git fetch origin
git reset --hard origin/master
這基本上只需要當前的分支,它指向的HEAD
遠程分支。
警告:正如評論指出,這將扔掉你的本地修改和與任何是起源覆蓋。
或者你可以使用管道命令基本上做同樣的:
git fetch <remote>
git update-ref refs/heads/<branch> $(git rev-parse <remote>/<branch>)
git reset --hard
編輯:我想簡單介紹一下爲什麼這個工程。
.git
文件夾可以保存任意數量的存儲庫的提交。由於提交散列實際上是提交內容的驗證方法,而不僅僅是隨機生成的值,因此它用於在存儲庫之間匹配提交集。
分支只是一個給定散列的命名指針。下面是一個例子集:
$ find .git/refs -type f
.git/refs/tags/v3.8
.git/refs/heads/master
.git/refs/remotes/origin/HEAD
.git/refs/remotes/origin/master
這些文件中的每一個包含指向一個哈希承諾:
$ cat .git/refs/remotes/origin/master
d895cb1af15c04c522a25c79cc429076987c089b
這些都是爲內部git的存儲機制,以及工作目錄的獨立工作。通過執行以下操作:
git reset --hard origin/master
git會指向相同的哈希值產地/碩士點到當前分支。然後強制更改工作目錄以匹配該散列處的文件結構/內容。
看到這個在工作中繼續前進,並嘗試以下操作:
git checkout -b test-branch
# see current commit and diff by the following
git show HEAD
# now point to another location
git reset --hard <remote>/<branch>
# see the changes again
git show HEAD
我無法測試所以我不知道這是否可行 - 但我贊成採取一個好的解決方案 – 2013-02-28 16:29:52
@timothyov這是真的,但基於我認爲這是暗示的問題。 – 2014-01-07 21:53:49
從最近批准的編輯在開始時添加大量警告,就像指出它已經提到:「然後[git]強制更改工作目錄以匹配該散列處的文件結構/內容。」但是,猜測這並不夠明確。 – 2014-05-14 22:28:49