git團隊使用實踐

2022-09-12 21:45:28 字數 3516 閱讀 8128

git即版本倉庫。分為遠端倉庫和本地倉庫,將某個遠端倉庫分支想象為1,則所有同事開發的本地倉庫為n,那麼,遠端倉庫和本地倉庫為一對多的情況。

git的命令基本都是給本地倉庫使用的,給遠端倉庫使用的命令,常用的就是,關聯遠端倉庫、刪除遠端倉庫、拉取遠端倉庫、推送到遠端倉庫。遠端倉庫需要保證問題,所以,不能跟本地倉庫一樣使用命令隨意處理,出了問題刪掉再新建乙個,或者拉取遠端分支覆蓋本地分支。

git的實質就是,某些內容的分隔或聚合。即,將一些**分割開來,或者將一些**組合起來。所以,用好git的前提就是區分,什麼東西需要聚合,什麼東西需要區分開來,清晰了,那麼,你就知道該怎麼使用git了。

工作區即代表著,**還沒有提供給git版本管理,只是本地的儲存,沒有本版歷史等資訊,可以通過命令:git checkot . 放棄工作區更改

命令: git add [ . | path ]

解釋:將**提交到暫存區,這只是乙個中間狀態,也不具備版本資訊,只是在git記錄了,工作區丟失了,還是可以通過暫存區獲取到的,相當於備份了。

其他:可以通過git status檢視更改的資訊,可以通過git reset放棄暫存區更改

命令: git commit -m "備註資訊"

解釋: 將**提交到本地倉庫,可以進行本地的版本管理,也可以結合svn,本地使用git,**提交則使用svn。這個時候,**被版本所控制,每個版本的更改都能查詢出來。

其他: 可以通過git reflog 檢視提交的歷史版本,會提供乙個id和備註資訊,所以備註資訊很重要。可以通過git reset --hard head 等命令重置版本,會捨棄掉該版本後的版本,也可以通過git checkout 版本id,切換到該版本,則不會刪掉之後的版本,類似新建了乙個同名的分支(團隊開發中過於複雜,不建議使用)。

命令:git pull、git push

解釋:將本地選中的分支倉庫和線上分支倉庫同步

檢視還未版本控制的內容:git status

檢視分支情況:git branch --l

刪除分支:git branch -d 分支

新建分支:git checkout -b 分支

儲存:git stash s**e "備註"

檢視儲存情況:git stash list

獲取儲存內容:git stash pop

備註:儲存功能慎重使用,儲存功能是指**的**還不適合提交版本,那麼,就可以用儲存,會將工作區和暫存區的所有更改另外儲存,切換分支去處理其他東西,切換回來將儲存的內容拿出來就可以繼續開發了。但是,會存在**丟失的情況,不建議使用。

莫名會多出很多更改:

原因:多次不規範使用git,導致版本混亂

處理:放棄更改,重新獲取**,git checkout . 或者視覺化操作工具

兩個遠端分支衝突:

原因:**處理提交的分支沒有嚴格執行,在不同人處理的時候,重複處理到了同一段**或者其他。

處理:1、分別從本地切換到對應的遠端分支,

2、如果不能切換,那麼,就新建乙個分支,關聯遠端分支即可(pull),

3、再從這兩個分支分別切乙個新分支,原本有也可以用,

4、切出來的分支發起合併操作,

5、處理衝突,

6、處理衝突後,被合併的分支合併合併到對應的遠端分支即可

從該環境分支切乙個新分支,修復後直接合併到該分支,並且同步到其他分支。

原因:1、其他分支有可能存在同事不小心錯刪**了,導致整個分支崩潰了,或者合併**的時候沒有跑一次再合,導致崩潰等等……

2、保證該分支的**是最接近測試的,保證**盡可能的安全

3、這個時候,修改的bug,所有分支都有,新開發的功能該分支沒有。

4、其他分支也是一樣的,一版作用與uat和prd

這個時候就需要採用最強大的方法了:將**本地備份,reset分支**,將本地**拷貝過去。該方法運用很多場景,十分強大,無***,優先考慮。

截肢。任何合併,reset分支合併也沒用

處理:1、找到這次提交的版本,

2、將**拉到本地,執行reset命令,將版本回退到該版本前乙個版本,

3、刪除遠端分支,再將當前分支關聯到遠端分支,設為版本分支,

4、其他**通過本地備份,或者線上切出來的預備分支,進行還原,

5、其他分支也一樣,如果都同步了,那就刪掉所有的分支,從該分支切出來

1、一般專案中都會分為:dev、test、uat、prd

2、其中,dev、test為a組,uat、prd為b組

3、正常的新功能開發以feat關鍵字開頭的,已經上線的bug修復以hotfix關鍵字開頭

4、hotfix分支可以隨時合併到a組以及更新的功能分支

5、hotfix合併如果要合併到b組,則需要先合併到test,經過測試後能合併到b組

6、每次uat更新,hotfix分支都需要同步各個分支,並且更新hotfix分支為最新uat**

uat和prd是實際客戶、使用者使用,所以得保證穩定,隔離一切還未進入的風險,所以,修復uat、prd的bug,需要再hotfix分支開發,如果緊急的,還可以直接從uat切分支,直接合併到uat(uat和prd**應當是一樣的,建議是先合併到test,驗證沒問題再由該分支直接合併到uat,而不是再由test合併到uat,test可能有新模組功能),經過測試大量測試,所以,uat**應該是比較穩定,而新增模組有些條件必須改一些之前的**和邏輯,可能導致問題,所以新功能模組不能直接合併到uat。

簡單乙個例子:

1、從dev切出a分支,a分支寫了文字「aa」,

2、提交上dev,那麼現在dev是「aa」,

3、這個時候,再從dev分支切出b分支,這時候b分支是「aa」,

4、b分支將「aa」刪掉,提交到dev,

5、那麼,最終結果,dev是空,a是「aa」,b是空。

如果不進行隔離,所有人都共用dev,合併到uat,那麼,這個時候,提交的時候,就會少了a分支的內容

再來乙個例子:

1、從dev切出a分支,a分支寫了文字「aa」,

2、提交上dev,那麼現在dev是「aa」,

3、這個時候,再從uat分支切出b分支,這時候b分支是空,

4、b分支新增「bb」,合併到dev

5、那麼,現在dev有「aa」、「bb」

6、檢驗沒問題,b分支合併到uat,那麼,這個時候,uat只有「bb」

現在uat與dev是隔離的,新改動的uat有,dev也有,dev中新功能「aa」,卻沒有提交到uat,從而實現隔離

團隊中git多人協作最佳實踐

使用git rebase i合併提交 rebase 為變基 git rebase i 命令可以壓縮合併多次提交 格式 git rebase i startpoint endpoint 其中 i的意思是 interactive 即彈出互動式的介面讓使用者編輯完成合併操作,startpoint endp...

linux 使用git實踐

1.安裝git yum install git y 2.生成ssh公鑰 ssh keygen t rsa 一路回車 3.進入.ssh目錄,檢視公鑰內容,並複製 cd ssh cat id rsa.pub 4.建立本地git目錄,並初始化 mkdir git cd git git init 5.web...

Git使用方法 團隊非常

git功能 1 從伺服器上轉殖完整的git倉庫 包括 和版本資訊 到單機上。2 在自己的機器上根據不同的開發目的,建立分支,修改 3 在單機上自己建立的分支上提交 4 在單機上合併分支。5 把伺服器上最新版的 fetch下來,然後跟自己的主分支合併。6 生成補丁 patch 把補丁傳送給主開發者。7...