2012-10-25 115 views
24

如果我理解正確,Git有兩種倉庫:一個叫本地,另一個叫遠程。我的問題對這兩種類型的存儲庫非常天真。Git的本地倉庫和遠程倉庫 - 混淆概念

那是正確的說

  • Git的本地倉庫是一個上,我們將進行本地更改,通常這個本地倉庫是我們的計算機上。

  • Git遠程倉庫是服務器之一,通常是位於42英里以外的機器。

另一個問題:一些教程介紹了我這個工作流程

  • MKDIR的myproject
  • CD的myproject
  • git的初始化
  • 觸摸自述
  • 混帳添加自述
  • git的承諾-a -m「

我看到git init創建myproject本地存儲庫。我不明白的是 git commit命令。如果我還沒有設置遠程存儲庫,Git如何知道在哪裏提交我的文件?

我希望我很清楚。

[編輯]我使用Git的方式可能與其他人不同: 我使用私人Git存儲庫來備份我的代碼。所以我想我需要一個遠程倉庫。在這種情況下,本地存儲庫應該是無稽之談。我對嗎?感謝您的澄清。這些是最天真的問題,我無法在其他地方找到答覆...

+4

它提交到本地存儲庫。 Git不需要任何類型的「服務器」或集中式存儲庫。 – Mat

+2

如果你使用'git init'設置了一個本地倉庫,然後你提交了'README'文件 - 那個文件被提交到本地倉庫** - 根本不需要是遠程的。 –

回答

27

什麼讓git如此真棒是它的分佈式版本控制系統。您的本地存儲庫具有與任何其他git存儲庫完全相同的功能和功能。因此,服務器上的git repo與github上的git repo相同(授予github增加了額外功能,但其核心是處理git repos),這與您的同事的本地回購相同。

那麼爲什麼這麼棒?因爲沒有中央回購,你必須有權進行工作。即使沒有互聯網連接,您也可以在本地機器上自行承擔分支和派對活動。然後,當您再次建立連接時,您可以將更改推送到您有權訪問的任何其他git倉庫。所以,儘管大多數人將特定的回購視爲中央回購,但這是一個流程選擇,而不是git要求。

所有這一切的目的是陳述(與其他人一樣),您將自述文件提交給本地回購。然後,只要您選擇,您可以將更改從本地回購推送到任何其他回購。這很漂亮!

7

您引用的語句是正確的。

根本不需要擁有遠程存儲庫。
你可以擁有完整的git體驗,包括提交,分支,合併,rebase等,只有本地存儲庫。

遠程存儲庫(例如GitHub)的目的是將您的代碼發佈到世界(或某些人)並允許他們讀取或寫入它。

遠程存儲庫僅在您的本地提交到遠程存儲庫或您從其中提交git pull時纔會涉及到。

10

如果我還沒有設置遠程存儲庫,Git如何知道在哪裏提交自述文件?

您提交到本地存儲庫(即擁有自己的變更控制適當的存儲庫,它不只是一個地方結賬...因爲你創造它在本地,它不是甚至本地結賬!)。

如果要將更改發送到遠程存儲庫(要備份它們,使其可供團隊的其他成員使用,或將它們發佈到全球),則必須使用push這些存儲庫。

26

正如我遇到酷似你同樣的問題(從VSSTFS mentalty推出),並在過去的3天開始明白。我相信這些圖表對於瞭解被困在那裏的其他人的整個情況會更有幫助。

來自:https://greenido.files.wordpress.com/2013/07/git-local-remote.png?w=696&h=570

Git Flow diagram 1

再一個,從 :https://wiki.lsr.ei.tum.de/lib/exe/fetch.php?media=nst/programming/git_flow.jpg&w=500&tok=e87798

Git flow diagram 2

+1

有幫助的答案。來自TFS的我自己並不相信本地回購的想法 - 這感覺就像是一個不必要的額外步驟,以便將更改推向團隊。 –

相關問題