1. 程式人生 > >在企業中是怎麼簡單使用Git的參與團隊開發的?Git使用教程

在企業中是怎麼簡單使用Git的參與團隊開發的?Git使用教程

一、下載安裝

1、首次使用git,需設定git的使用者名稱與郵箱:

$ git config --global user.name "username" $ git config --global user.email "your email"

2、檢視SSH Key是否生成過(SSH安全外殼協議,可參看部落格安全外殼協議):

$ cd ~/.ssh

$ ls 檢視是否有id_rsa(私鑰)和id_rsa.pub(公鑰)兩個檔案

3、如果SSH Key未生成過,則使用如下命令建立或覆蓋

$ ssh-keygen -t rsa -C “your email”

設定密碼(輸入兩次密碼以確認)或不設定密碼(三次回車)

4、登入github或gitlab官網,設定SSH Key後,Git Bash即可正常使用

三、專案開發使用步驟

1、在GitHub或GitLab上建立遠端倉庫

2、克隆專案,開啟Bash,cd到本地想建立本地倉庫的位置(一般建議你的開發就應該在這個目錄上,比如Eclipse的workspace就在這個目錄上,你對本地倉庫的操作都會同步到開發中,在Eclipse中專案點右鍵refresh一下就會更新,超級方便),然後:

$ git clone "倉庫的 SSH url"(成功的話就能ls檢視到倉庫檔案,cd進去會目錄上會顯示(master)主分支)

3、建立分支,一般不推薦直接在主分支上開發,所以建立子分支作為開發分支

$ git branch 分支名(建立分支)

$ git checkout 分支名 (切換分支)

4、在進行了修改後,提交修改到快取區

$ git add 目錄/檔案/.(.代表目錄下的全部檔案)

5、如果本階段修改已完成,可以將修改提交到本分支(即可多次add後commit)

$ git commit -m "提交說明"

這裡說一下git的執行區域(圖解可參看部落格點選開啟連結

工作區就是我們本地的檔案系統

版本庫包括快取區與分支區,執行add的修改就被提交到了快取區,執行commit後的修改就被提交到了分支區

6、如果一天的任務完成或一階段任務完成了,就可以把本地分支的內容提交到遠端倉庫中,以供管理者審查、合併

$ git push origin 分支名

7、因為使用Git的目的就是多人協作開發,所以別人完成了的工作可能是你完成工作的基礎,這時候你的本地就需要別人push到遠端倉庫(你們使用的是一個遠端倉庫)的程式碼,可以通過:

$ git pull origin 分支名(拉取主倉庫到本地本分支)

上述過程其實相當於兩步,

git fetch origin (將遠端倉庫拉取到本地) 與  git merge origin 分支名 (合併本地與分支)

*這樣做其實是不太規範的,規範的做法是:master主分支上存放遠端倉庫的所有版本,子分支只用來本地開發和上傳修改,所以所有的pull都應當拉到master上,而不是直接到pull子分支,然後再通過merge master實現與master子分支合併:

$ git checkout master (從當前分支切換到主分支)

$ git pull(拉取遠端倉庫當前版本到主分支)

$ git checkout 子分支名 (從主分支切換到子分支)

$ git merge master(與主分支合併)

注意:還有一個git rebase指令同樣是合併分支,與只是被合併的分支就消亡了,是完全的合併,而merge是內容合併。rebase可以與pull一起使用,這在第九點衝突時會說到。

8、在拉取之前,因為我們有本地的修改,它們還未儲存,pull後會丟失,我們可以commit提交、版本合併後再拉取,但你可能還不想這樣做,而且你的程式碼不一定到了上傳、合併的時機,那就需要暫存我們的修改

$ git stash(暫存修改)

$ git stash pop (pull之後,彈出修改)

9、在這個過程中,有很大可能遇到衝突

最常見的衝突是內容衝突:你修改了一個函式的實現,而遠端倉庫版本跟你的不一樣,當主版本和你的修改合併時,這段程式碼的修改到底聽誰的,所以就衝突了。通常出現在git pullgit merge的過程中。

這種衝突的解決方式是:直接修改衝突檔案,在執行指令後有衝突的檔案會標識在命令列中,在衝突檔案中有如下標誌:

<<<<<<< HEAD 這之間的是你的修改 ======= 這之間是其他人的修改 >>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc

然後刪除其他人的修改或者刪除自己的修改,刪除識別符號,當處理完所有衝突後,執行git addgit commit即可。

git rebase的過程中,也許會出現衝突: 在這種情況,Git會停止rebase並會讓你去解決衝突;在解決完衝突後,用git add命令去更新這些內容的索引(index), 然後,你無需執行commit,只要執行:

$ git rebase --continue這樣git會繼續應用(apply)餘下的補丁,這裡說的補丁是這種情況:

表示把你的本地當前分支裡的每個提交(commit)取消掉,並且把它們臨時 儲存為補丁(patch)(這些補丁放到".git/rebase"目錄中),然後把本地當前分支更新為最新的"origin"分支,最後把儲存的這些補丁應用到本地當前分支上

$ git rebase --abort在任何時候,你可以用--abort引數來終止rebase的行動,並且當前分支會回到rebase開始前的狀態。