git使用與工作流程

1.將本地代碼更新爲遠端的最新代碼

這分兩種情況,本地代碼不存在,用git clone將代碼拉過來;本地已存在,使用git pull更新本地代碼

a.本地不存在項目代碼,首先將代碼由倉庫clone到本地:git clone https://github.com/mnmlist/Algorithms.git

b.本地已存在代碼,直接git pull一下更新下本地代碼爲最新,當然這是全部分支都更新,也可以使用git pull origin 

branch_name來僅更新某個分支的代碼最最新


2.對代碼進行修改

分支介紹

修改前一定先確定在自己要在哪個分支上做修改,否則修改過後才發現自己在master或develop上就麻煩了,還需要取消

自己的修改。

a.master分支:一般master分支是線上代碼分支,生產用的代碼都在該分支上,容不得任何差錯;

b.test分支:test是qa分支,給測試人員用的,一般也不允許有任何問題;

c.develop分支:develop分支是給開發測試人員測試自己代碼是否合格的分支,一般是在自己的分支上測試沒問題後才

可以合併到develop分支上;

d.任務號分支:自己的開發分支,一般對應某個具體的任務,開發完成後就可以將其刪除;


如何將分支切換到自己的分支上呢?

a.已經有自己的分支號,直接git checkout branch_name即可以切換到自己的分支上;

b沒有自己的分支號,一般需要自己手動創建,git branch branch_name,然後在git checkout branch_name切換到該分

支上,也可以直接使用git checkout -b branch_name完成上述兩個步驟,創建分支並切換到該分支上;


下面有個問題,所謂的創建分支,創建的分支的代碼跟哪個一樣呢?

a.新分支在哪個分支上創建,所創建的分支的代碼就和哪個分支一致;

b.一般自己該如何新建分支呢?一般情況下master是生產用的代碼,理論上是沒有任何問題的,所以一般創建分支都是

在master分支上創建新的分支,然後在新分支上修改;


3.對修改代碼進行提交

a.首先使用git status查看修改了哪些文件,使用git diff查看對文件的哪些部分做了修改;

b.保存代碼修改:可以分條對文件進行保存,git add file_path/file_name分條保存文件,也可以通過git add . 來保存所有

的修改,但是使用git add . 保存的話要慎重,這需要你在.ignore文件裏配置不需要提交的文件,如項目每次運行所新生成

的文件,.class文件、.impl文件等,否則可能就會把.dev分支的代碼搞亂,所以使用git add .前一定保證自己.ignore文件

裏進行了相應的配置

c.使用git commit命令來對上述的保存進行相應的說明,git commit -m "對上述文件做了哪些修改"

d.在提交最代碼的修改前一定要pull下遠程的代碼,如果有幾個人在同一個分支上協同開發的話,在你pull遠程代碼到本地和

對代碼修改後提交到遠端之前,遠端的代碼可能已經改變了,所以git push推送自己的代碼之前得先pull下遠程最新代碼,

如果pull過來後,遠程跟本地有衝突,解決衝突後再提交代碼;

e.通過git push origin branch_name將自己最新的修改推動到遠端;


4.合併代碼

a.一般合併代碼會有個方向的問題,這個一定要注意,否則後果非常嚴重

b.一般合併代碼的順序是首先在本地測試自己分支的代碼,本地測試沒有問題後纔可以考慮合併代碼;

c.合併分支的順序爲:首先將自己分支的代碼先合併到develop分支,本地測試沒什麼問題後,將修改push到develop遠端,

在遠端部署項目develop分支的代碼,然後交給項目經理測試,項目經理測試有問題的話再修改代碼,push到分支遠端,

繼續往develop提交合並修改,再讓項目經理測試,只至沒有什麼問題,然後纔可以考慮往test分支提交。往test分支提交

代碼過程和往develop提交是一致的,合併完成並部署成功後交由QA測試,這時的測試人員是QA測試人員,一般是不允許

程序出現什麼問題的,否則後果也很嚴重;qa測試人員通過代碼的測試後然後才能往master分支上合併,合併過程和往

test和develop合併一樣。

d.從c中可以看出,合併代碼的過程爲自己的分支->develop,自己分支->test,自己分支->master合併的過程,不存在develop,test

和master之間的合併。

e.合併的過程中會有衝突,一定要謹慎地處理衝突,否則就有可能把別的代碼給刪掉,一個不怎麼好的實踐就是直接將遠程的develop

分支代碼拷貝過來,然後將自己的修改再添加進去,這中情況僅僅針對mybatis那種sqlMapper.xml文件類似的衝突的自己不知

怎麼快速解決衝突的情況,一般情況下自己是可以快速解決衝突的。

f.解決衝突後一定要自己在本地運行下代碼,代碼沒有什麼問題後纔可以將自己的修改add,commit,push到遠端;


5.tips

a.當自己相放棄某個文件的修改時可以採用git checkout -- file_name,亦可以通過git co .來放棄自己對當前分支所有文件的修改;

b.當自己將自己分支的代碼搞亂後可以使用git reset hard --HEAD來恢復該分支與本地分支的最後一次修改一致;也可以使用git
reset --hard origin/master來恢復本地分支與遠端的master分支一致。

c.使用git log查看對該分支的所有修改的log,使用git shortlog來查看對該分支的所有修改log。

d.如果想放棄本地的所有修改和commit,強制讓本分支與遠程的master一致,可以使用git fetch origin master,git reset --hard 
origin/master,再pull一下就發現遠程分支的代碼已經和master一致了。

e.git co -- <file_name>,拋棄工作區修改,git co .拋棄工作區所有修改

f.git commit --amend用來修改git commit的註釋內容


發佈了342 篇原創文章 · 獲贊 78 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章