2015-01-05 239 views
-2

據稱,如果用戶創建了非裸存儲庫並通過發出git status來檢查狀態,他會看到沒有要提交的文件;那麼另一個用戶可以將文件推送到非裸存儲庫,以便創建該存儲庫的第一個用戶再次發出git status命令並且將找到不同的對象數據庫,這就是爲什麼在這樣的共享中裸存儲庫是必需的實例! (這是裸倉庫可以防止的一個糟糕的場景的例子)Git裸和非裸存儲器

我的第一個問題是,如果有人能夠提供一個答案,倉庫的創建者如何僅僅通過發佈git status來查看第二個用戶的變化如果他仍然在本地存儲庫中工作;也就是說,他看出這種差異的唯一途徑 - 在他期望的事物和在遙遠的事物中的事實 - 之間的區別 - 首先是推動還是試圖合併?如果他確實推動或合併,那麼說這是git協作的本質是不正確的。我知道我的想法是錯誤的,但是有人能告訴我我哪裏出錯了嗎?

第二個問題是裸露的和非裸露的存儲庫是否是2個獨立的存儲庫或兩者之間是否存在連接?換句話說,如果一個用戶創建一個裸存儲庫,然後另一個用戶克隆它(創建一個非裸存儲庫),當第二個用戶添加並提交文件然後將它們推送到遠程服務器時,服務器端發生了什麼? (第二個用戶)與另一個存儲庫一起工作?

+1

從概念上講,您應該將裸露和非裸露的存儲庫簡單地看作同一存儲庫的舊版本和新版本,然後閱讀有關在Git中使用不同版本的存儲庫可以執行的操作的信息。 –

回答

-1

第二位用戶向遠程存儲庫發送新文件後,存儲庫將變爲非裸設備。第一個用戶將需要從遠程存儲庫中取出或重新綁定,以使其本地存儲庫與遠程存儲庫保持同步。如果用戶不這樣做,他的本地存儲庫不會「知道」遠程更改,其狀態將代表遠程存儲庫的早期版本。

+0

你說的話是有道理的,我也明白這一點;不過,我對這篇文章仍然有同樣的看法。我不明白「裸」存儲庫所保存的是什麼 - 它是否保存工作目錄文件的當前和過去快照(即文件的內容以及何時提交?)。原則上, – WITL

+0

是的,一個存儲庫將保存所有歷史提交和文件內容,除非它們被刪除。 –

+0

所以當我和一羣開發人員一起工作時,我們都擁有非裸存儲庫,我們在這裏進行更改並保存歷史記錄,我們如何協調我們不同版本之間的合併 - - 我們不會將數據分別存入我們的本地存儲庫,做一些合併,然後推動它的目標是快速向前推進(假設我們解決本地rwpository上的衝突)?如果是這樣,當我們經歷這個過程時,我們使用裸倉庫還是非裸倉庫? – WITL