簡體   English   中英

帶有多個分支的Git裸倉庫

[英]Git bare repo with multiple branches

我想創建一個具有多個分支(主,開發,發布等)的git裸存儲庫。 所以問題是,是否有可能簽出裸倉庫或如何在分支之間進行切換(切換是否有意義)?

當我想推送到裸倉庫時,我可以在裸倉庫上進行合並,還是必須在本地進行合並並推送適當的分支? 因此,尋找正確的方法:-)

謝謝彼得

我想創建一個具有多個分支(主,開發,發布等)的git裸存儲庫。

從這個問題來看,您似乎不確定要創建一個裸git倉庫的原因,以及如何使用該倉庫。 問題是, 為什么要建立一個裸倉庫?

Pro Git中 ,裸存儲庫是“不包含工作目錄的存儲庫”。 這是一個您無法使用的存儲庫,僅用於git pushgit pull from。 這樣做的原因是總結了這里

“一個裸倉庫是一個沒有簽出代碼的工作副本的倉庫。它僅包含git數據庫。一般而言,您永遠不要將其推入一個包含工作副本中的更改的倉庫。為確保不會發生這種情況,我們正在使服務器存儲庫成為裸露的存儲庫-它沒有工作副本。”

因此,裸露的git倉庫肯定可以包含多個分支。 您絕對可以將裸遠程存儲庫的副本提取到本地存儲庫,然后從本地存儲庫推送到遠程(裸機)存儲庫。 但是,你不想 工作了裸存儲庫。 (此外,在裸倉庫中無法運行git add ;有關澄清請參見此SO問題 )。

所以問題是,是否有可能簽出裸倉庫或如何在分支之間進行切換(切換是否有意義)?

我認為這個問題尚不完全清楚,因為您從未真正在裸存儲庫上切換分支- 從未在裸存儲庫上工作 您所要做的就是從中推或拉。

當我想推送到裸倉庫時,我可以在裸倉庫上進行合並,還是必須在本地進行合並並推送適當的分支? 因此,尋找正確的方法:-)

要將git-push到裸倉庫,首先必須確保沒有合並沖突-如果存在合並沖突,則推送將失敗( 參考:book.git-scm.com,“將更改推入公共倉庫” )。 因此,必須在本地進行合並,然后使用git-push在裸存儲庫上快速進行更改。

因此,尋找正確的方法。

除了您不應該也不能使用它之外,裸倉庫沒有什么特別之處。 正如其他人所引用的那樣, gitflow模型為您提供了一個涉及多個存儲庫的工作流的概念-SO上有很多問題要求git工作流示例和方法。 幾乎每個參考文獻(1,Pro Git) (2,book.git-scm.com)都結合使用裸存儲庫公共或已發布的存儲庫-鏈接的文章詳細討論了裸存儲庫的創建和使用。

問題與您要執行的操作尚不明確。 Git沒有強制執行特定的工作流程模型。 這個想法是由您自己決定-開發團隊。 根據您發布的分支名稱,在我看來,您傾向於gitflow模型 ,這對於許多公司和開發團隊來說都是非常成功的工作流程。

最初創建存儲庫(如果某個遠程服務器上不存在該存儲庫)時,您將使用git init來創建一個具有默認master分支的新存儲庫。 然后,您可以使用git add和commit來添加文件: git commit 當您准備推送到遠程git服務器(例如github )時,可以使用以下命令添加遠程git URL: git remote add origin <url>並使用git push origin master將存儲庫推送到服務器如果有一個要從中克隆存儲庫的遠程服務器,則可以使用git clone <repo url> ,它會下拉存儲庫並指向默認分支(通常是master )。

當您想在功能分支上進行開發,然后再將其合並(例如)時,或者當您的代碼准備發布時,分支到release分支並最終合並到現場/生產中時,切換分支非常有用科。 有關執行此操作的詳細信息,請參見gitflow模型

為了開始使用git,我建議您仔細閱讀github上文檔 ,從“ beginner”開始。 您還可以在A List Apart 入門git文章中閱讀更多有關git的信息以及一些基本命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM