簡體   English   中英

Git工作流程(Dev> Staging> Live)基本技術問題

[英]Git workflow (Dev>Staging>Live) basic technical questions

我對Git(和VC這個問題)很陌生,我正在努力了解使用分支機構開發Dev> Staging> Live工作流程背后的概念。

我正在嘗試應用工作流的一部分,它使用dev分支和發布分支而不是固定的分段

在嘗試使用Git之前,我使用SVN進行了“相同”的工作流程。 但是我們不是為每個階段創建分支,而是使用單獨的存儲庫。 現在我正在嘗試應用分支,事情變得有點模糊。

我可以理解工作流程背后的想法,但無法從技術角度來理解它。

我正在創建它的步驟:

創建文件夾

user:/var/www/$ mkdir dev.example.local
user:/var/www/$ mkdir staging.example.local
user:/var/www/$ mkdir example.local

初始存儲庫

user:/var/www/example.local$ git init
user:/var/www/example.local$ git remote add origin git@bitbucket.org:user/example.com.git
user:/var/www/example.local$ echo "README" > README
user:/var/www/example.local$ git commit -am "First"
user:/var/www/example.local$ git push origin master

user:/var/www/example.local$ cd ../dev.example.com
user:/var/www/dev.example.local$ git clone git@bitbucket.org:user/example.com.git .
user:/var/www/dev.example.local$ git checkout -b dev
user:/var/www/dev.example.local$ git push origin dev

user:/var/www/dev.example.local$ cd staging.example.com
user:/var/www/staging.example.local$ git clone git@bitbucket.org:user/example.com.git .

一些關於dev分支的工作

user:/var/www/dev.example.local$ echo "New" > newfile
user:/var/www/dev.example.local$ git add .
user:/var/www/dev.example.local$ git commit -am "Some new file"
user:/var/www/dev.example.local$ git push origin dev

當事情准備好發布新版本時

user:/var/www/staging.example.local$ git fetch
user:/var/www/staging.example.local$ git checkout -b release-0.1 dev
user:/var/www/staging.example.local$ git push origin release-0.1

user:/var/www/staging.example.local$ cd ../example.com
user:/var/www/example.local$ git fetch
user:/var/www/example.local$ git merge --no-ff origin/release-0.1
user:/var/www/example.local$ git tag -a "0.1"
user:/var/www/example.local$ git push origin master

user:/var/www/example.local$ cd ../dev.example.com
user:/var/www/example.local$ git merge --no-ff master
user:/var/www/example.local$ git push origin dev

我很確定我沒有遵循正確的步驟。 那么,“正確的方式”是什么:

  • 創建devstaginglive文件夾並在每個文件夾中初始化git repo?
  • 結帳/合並新版本?
  • 合並從發布生活
  • 創造整個環境?

和:

  • 我應該在哪里運行那些git命令? 在我當地的回購? 對於每一個階段?

相關信息:

  • 我正在使用BitBucket
  • 這是針對網站(Drupal)的開發
  • 我的分支是現場舞台
  • 大約有3名開發人員同時工作,每個開發人員在不同的國家/地區工作

您不需要創建不同的存儲庫。 你應該學習什么,你可能會喜歡git是與分支機構合作是多么容易。 所以第1步:

  • 忘記你從SVN背景知道的任何事情

現在我們都已經確定了,這就是我們的想法。 假設你目前只master了你的bitbucket:

  • 克隆存儲庫:

     $ git clone git@bitbucket.org:user/example.com.git $ cd example.com 
  • 創建你的分支:

     $ git branch dev $ git branch staging 
  • 讓其他人知道這些分支:

     $ git push origin dev $ git push origin staging 
  • 開工!

     $ git checkout dev $ touch new_file $ git add new_file $ git commit $ git merge master # and resolve conflicts $ git checkout master $ git merge dev $ git push origin 

注意:上面的示例是一個簡單的分支實驗合並,可能不會反映您的教程的確切工作流程。

簡而言之,您沒有不同的存儲庫,而是在單個存儲庫中具有分支。 在這些分支之間,您可以根據需要合並您喜歡的任何工作流程。 您可以擁有未推送到原點的其他分支,因此它們對其他分支是隱藏的。 您當然也應該git fetch / git merge每次經常git merge您想要處理的分支,以確保您從其他協作者那里獲得最新的更改。

有關git工作流程的示例,請查看我的:

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

這應該讓你開始成熟的過程。

暫無
暫無

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

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