檢出分支會移動本地HEAD
指針,以便它指向與分支引用相同的提交。例如:
當分支mybranch
(在C
s爲提交):
HEAD
|
V
master mybranch
| |
V V
C1 -------> C2 -------> C3
運行git checkout master
後:
HEAD
|
V
master mybranch
| |
V V
C1 -------> C2 -------> C3
這也爲必需的,以便移動在你的工作目錄下的文件它是該項目在該提交中看起來像什麼的完美快照。它不會刪除或更改提交,因此您不會通過檢出另一個分支而在一個分支中失去工作。
在另一個問題中描述的「分離頭部」情況下發生了什麼,C3
與分支沒有關聯。爲了解決此問題,您需要更新master
分支指向的提交,以便它包含新東西(C3
)。檢出master
告訴git你現在正在使用主分支,然後做一個硬reset
與您提交的SHA1 想要在您的master
分支的頂端更新分支引用到你想要的。
編輯:
在這種情況下,一個分離的頭不是問題。請記住,提交和推送是git中的兩個不同的事情。提交不會像Subversion那樣與中央存儲庫進行通信。在對工作目錄進行更改後,對於每個已更改的文件運行git add filename
一次,其中filename
是該文件的名稱。一旦所有文件都被添加到索引中,您可以使用git commit
來提交它們。
對此的簡寫是使用git commit -a
,它會在提交前自動將修改後的文件添加到索引。這允許您跳過git add
步驟。請注意,git commit -a
只會添加修改後的文件。如果您要引入一個從未提交的新文件,則必須手動將其添加到git add
。
一旦你提交了進展,你可以運行git push
來發送提交到遠程倉庫和更新遠程分支。這只是遠程通信的東西。與Subversion不同,提交本身是在本地處理的,與服務器沒有任何交互。
什麼問題是「本」的問題?你沒有提供鏈接。 – 2010-03-11 00:28:50
對不起,請參閱編輯:) – danwoods 2010-03-11 00:33:19