我在我的企業中使用GitLab作爲存儲庫,我試圖調查分支管理中的一些標準。我看過this,這是關於Bitbucket分支結構的建議。bitbucket分支結構提供什麼優勢?
我想知道它提供了哪些優點,比較簡單的結構,如主分支和其他分支來自它。
據我所知,該標準是原產地服務器內的文件夾結構,您可以在其中找到:master,hotfix,feature,bugfix和release文件夾,其中每個文件夾都有關聯的分支。
它是正確的嗎? 你能否爲我提供更多的信息來更好地理解它?
我在我的企業中使用GitLab作爲存儲庫,我試圖調查分支管理中的一些標準。我看過this,這是關於Bitbucket分支結構的建議。bitbucket分支結構提供什麼優勢?
我想知道它提供了哪些優點,比較簡單的結構,如主分支和其他分支來自它。
據我所知,該標準是原產地服務器內的文件夾結構,您可以在其中找到:master,hotfix,feature,bugfix和release文件夾,其中每個文件夾都有關聯的分支。
它是正確的嗎? 你能否爲我提供更多的信息來更好地理解它?
讓我來解釋一下文件夾和分支之間的區別。
A 文件夾只是一個文件夾,一個目錄。它可以在任何分支。它包含項目文件,子目錄等。
另一方面,分支用於允許多個人在同一個項目上工作而不會互相干擾。假設兩個人在一個項目的不同領域工作,但共享一些文件。他們所做的是,他們都打開自己的分支,例如branch_joe
和branch_lidi
。現在不是推到master
,而是推到他自己的分支。通過這樣做master
(通常用於主項目)會完好無損。在他們完成整個項目的一些子問題後,他們將分支與master
合併。這些變化已經被應用,合併發生,一切都很好。
但爲什麼他們不能推到master
第一?那麼,因爲他們正在改變相同的文件,例如foo.c
,就會出現問題。假設Lidi首先更改foo.c
並推送到master
。現在喬也想推,但他不能,因爲他不在最新的分支master
上。他首先需要拉動,但現在在分支master
上有更新版本的foo.c
。如果他沒有更改foo.c
,他的本地版本將成功覆蓋,因爲git會知道他的本地版本來自之前的提交。但是因爲他在他的機器上更換了foo.c
,git變得困惑。不確定是否覆蓋Joe的本地文件,不能複製Lidi提交的文件或要執行的操作。在這種情況下,它會將文件合併到一些臨時文件中,並使用>>>>><<<<
這樣的行,Joe必須手動編輯文件以選擇他想要的更改。正如你所看到的,這很耗費時間。
但是,如果他們每個人都在自己的分支上工作,Lidi會將新的foo.c
推到branch_lidi
。現在Joe想推他的foo.c
,他會將它推到branch_joe
,並且由於分支不重疊,Lidi的提交不會打擾Joe的foo.c
,他會毫不費力地將他的分支推送給他的分支。他們完成工作後,將分支合併到master
。合併後,他們也可以刪除他們的分支,如果他們不再需要它們的話。
希望這足以說明問題,我沒有失去你。
bugfix/foo只是分支的名稱。這不是一個文件夾或類似的東西。使用這種命名約定可以更容易地找出分支的用途,就這些。他們仍然像其他分支一樣分支。 –
@JBNizet謝謝!很高興知道。 – Maik