2013-01-23 101 views
0

老實說,我的背景是SVN,git完全混淆了我,而git的文檔對我沒有任何意義,沒有,零。git:從遠程倉庫獲取所有文件

我從同事的一些通信中得知,遠程存儲庫中還有其他目錄和文件與他們正在處理的內容有關。我沒有在當地看到他們。我希望我的本地工作空間能夠反映所有這些變化。我不知道所有文件的名稱 - 可能有數百個。

有點像克隆,但不抱怨本地副本存在。我已經嘗試過各種命令,無論是「致命錯誤」還是「已經最新」。

到目前爲止,我已經設法覆蓋並丟失了一些現有的工作。不知道我是怎麼做到的 - 我認爲版本控制永遠不應該永遠(×254)讓這種事情發生!

+0

在Git中,沒有SVN中的經典「工作副本」。當您克隆Git存儲庫時,您將創建一個完整的副本,包括整個修訂歷史記錄。我建議閱讀一些關於該主題的教程 - 例如,[Git book](http://git-scm.com/book/de)非常出色;此外,還有一個很棒的[Github互動教程](http://try.github.com/levels/1/challenges/1)。 – helmbert

回答

2

使用git時,您始終擁有遠程軟件倉庫的克隆。

svn update大致相當於爲git fetch其獲取所有新提交從遠程倉庫後面是git merge remote/master(或者你可以使用git pull命令,做這兩個步驟)。在執行git mergegit pullgit fetch是安全的)之前,在本地執行所有更改通常是個好主意,因爲它會嘗試將更改與遠程分支合併,並可能導致衝突。

svn commit的粗略等價物是git push,它會將您的更改發送到遠程軟件倉庫,並將更新對那裏分支頭的引用。在進行推送之前,您應該始終進行合併,否則您可能會意外刪除您的同事更改。儘管您的團隊可能有另一個工作流程(將補丁發送給負責集成的單個人員)。

如果你來自svn,理解git最簡單的方法就是認爲你總是在一個分支上工作,並且與團隊的其他成員共享是通過合併你的或者你的參考分支。

否則,我真的會推薦閱讀Git book或至少Git SVN crash course

+1

會不同意。我正在比較我和同事之間的兩個本地副本:他有我的東西丟失。關於這些命令,已經完成了:git fetch&git merge和git pull - 「一切都是最新的。」但我知道這不是。我從遠程存儲庫中缺少整個項目。 –

+0

你是否在正確的分支?你合併了正確的分支嗎?你可以試試'git checkout -b $ {new-branch-name} remote/$ {遠程分支名稱}',看看你是否得到了所有的代碼。 –

+0

謝謝你的幫助。我所做的是丟棄我的本地並克隆一個新的。它是完整的。不知何故,我必須不可逆轉地搞砸我的本地。 –