2012-02-14 200 views
14

我的任務是爲我的辦公室設置Git。我們有幾個網站。我只是爲我們設置了一個網絡驅動器來推動我們的修改。我的問題是:我在哪裏啓動Git存儲庫?Git安裝最佳實踐

  1. 每個站點的新dir + init?
  2. 一個init在乾淨的&新驅動器和每個目錄不同的網站?
  3. 還有什麼更好的,我失蹤了?

我從任何和所有人尋求建議,特別是如果你詛咒了第一個設置它問「爲什麼」的人?

+5

如果你是一個完整的新手:他們如何在這個世界上把這個任務交給你?誰決定採取混帳時,即使是必須建立它的人完全不知道系統? – eckes 2012-02-14 19:31:02

+1

小型開發團隊,我們都戴着很多帽子......我最初的問題就是這樣。 – rpophessagr 2012-02-14 19:31:48

+1

@rpophessagr - 這是我第一次見到任何人引用的E.E.Cummings詩。我甚至使用它作爲我自己的用戶名。涼! – 2012-02-14 19:41:04

回答

4

這是一個偏好問題,如果你寧願將所有代碼庫放在一個git倉庫中,或者每個倉庫都有自己的代碼倉庫。也就是說,我的偏好是每個代碼庫/站點的一個git repo。這樣,您可以在單一網站上工作而無需查看其他網站,而且您不必擔心其他網站的更改會妨礙您可能推送到任何特定網站的任何提交。

+0

謝謝,這很有道理。 – rpophessagr 2012-02-14 19:34:32

+1

如果您需要能夠更改某件事的版本而不影響另一件事,那麼它們需要位於單獨的存儲庫中 - 這不是偏好問題。 – Cascabel 2012-02-14 21:48:56

36

回購的結構是不是一個問題,如果網站(無論你想告訴與此),但項目的問題。

作爲一個經驗法則:

  • 使用一(bare,福地)回購每個獨立項目
  • 如果公共模塊被共享,實現與submodules

在每個回購,用branches結構化工作,並做而不是混淆分支與組織不同軟件棧的方式:分支用於組織工作o ne repo(即ONE軟件的不同開發字符串)。一個分支模型(這似乎是相當流行在這裏SO),這是一個:

enter image description here

困惑?好奇?閱讀explanation ...

+0

謝謝!通過子模塊你是指分支機構?或者是其他東西? – rpophessagr 2012-02-14 19:37:34

+1

+1 for bare repo('git init --bare') - 絕對是OP環境的必備品,聽起來像。 – 2012-02-14 19:38:27

+0

偉大的文章感謝! – rpophessagr 2012-02-14 19:41:52

1

您可能希望擁有一臺集中式服務器,您可以將更改推送到其中並從中克隆。這臺服務器可能有一個或多個存儲庫。我建議您閱讀http://sethrobertson.github.com/GitBestPractices/,它有幾個直接感興趣的部分。具體挑選本地工作流程,分佈式工作流程,以及如何將工作分成存儲庫。

2

如果您在內部託管回購,我會推薦gitolite。您只需更改混淆文件即可添加中央回購站。

除非您正在進行跨平臺開發,否則將auto crlf設置爲false。

管理您的分支機構是這樣的:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

0

基本設置

我建議你創建專門的git服務器上的目錄。

我在我的公司運行的服務器上使用目錄名/git進行工作相關的事情和個人使用我還在專用Web服務器上創建了一個名爲/git的目錄。

裏面你/ git的目錄,你可以創建裸存儲庫爲您的項目

ssh [email protected] 
cd /git 
mkdir Project7sName.git 
cd Project7sName.git 
git init --bare 
echo "Take over the world project" > description 

添加觀衆

然後你就可以在服務器上安裝類似GitList允許軟件的變化是很好的查看例如紅色刪除和綠色插入。

GitList example image

分佈式版本控制?

Git是一個分佈式版本控制系統。所以你可能想在幾個地方做這個。這樣做的好處是,如果您在任何時候失去與其他網站的連接,就可以繼續不間斷地工作。此外,如果您有硬盤驅動器故障或任何類似的問題,您有多個數據副本。

如果你喜歡人們應該總是推動,或者你的工作實踐可能是人們推送到所有服務器站點,那麼你可以提名一個站點作爲主站點。

。利用命令像

git remote add siteA ssh://[email protected]/git/repositoryX.git 

這樣你就可以做這樣的事情

git push siteA master 
git push siteB master 

我有每天開行,從GitHub拉動,從我們自己的gitserver,一個NAS備份腳本驅動器,USB驅動器,並推向他們每個人。

這樣做有兩種方法可確保有多個軟件更改副本。

  1. 通過用戶(推到多個站點)和
  2. 通過管理(複製站點之間的變化)。

首先在服務器上設置Git並添加諸如GitList之類的東西來很好地查看更改。

一旦您正確理解了所涉及的步驟,您可以在其他站點重複它們,如果您喜歡,選擇何時。

導入舊項目?

作爲系統管理員,您可能想要將舊項目導入到Git中。

您可以通過提交一個空的存儲庫來完成此操作。

git touch .gitignore 
git add .gitignore 
git commit -m Empty 

,然後重複解壓項目的已歸檔的版本到項目目錄(從git的文件清空分開),並提交存檔的狀態。

rm * 
unzip ... 
git add * 
git commit -m "Archived state 2013 week 18" 
git tag ArchivedState2013week18 

如果按時間順序提交存檔的狀態,然後你的瀏覽軟件(GitList或其他)然後可能會開始向您展示歷史修正軟件的軟件變化,儘管有時混合在一起,別人不完整的。

此外,您將能夠使用git blame有一些想法,當一些代碼行被引入。