Git手把手簡易教程

純潔發表於2019-03-24

前言

git是一個開源的分散式版本控制系統,用於敏捷高效地處理任何或小或大的專案,是團隊協作開發的必備技能,下圖是git的工作流程。

git工作流程

註冊

下面以gitlab為例,註冊好賬號後,新建專案,命名為test_git。

gitlab新建專案

gitlab新建專案2

下面請準備兩臺電腦,沒有兩臺電腦可以用虛擬機器代替

A和B電腦都安裝Git

  • Windows:

    進入git-scm.com下載安裝,安裝時全部點下一步即可。

  • Linux(Ubuntu):

    apt install git
    複製程式碼
  • Linux(Centos):

    yum install git
    複製程式碼
  • Mac:

    brew install git
    複製程式碼

設定git的提交郵箱和提交使用者名稱(這步不能漏,不設定郵箱和使用者名稱是無法提交的),執行命令:

git config --global user.email "you@example.com"
git config --global user.name "your name"
複製程式碼

這個郵箱和使用者名稱只是你提交到git遠端上顯示出來的,可以隨便填寫,並不需要和你的gitlab郵箱和使用者名稱保持一致,但建議保持一致。

A和B電腦都配置SSH-Key

配置ssh-key,簡單來說就是git本地和git遠端通過金鑰關聯起來,不用每次推送和拉取都輸入密碼,而且還是加密傳輸。

1. 本地配置

命令列輸入(Windows的開啟安裝好的git.exe輸入命令):

ssh-keygen -t rsa -C "你的郵箱地址"
複製程式碼

一路回車,生成ssh金鑰。

  • Windows: 開啟c:/使用者/自己的使用者名稱/.ssh,找到id_rsa.pub這個檔案,用記事本開啟。

  • Linux/Mac: 開啟~/.ssh,找到id_rsa.pub這個檔案,用文字編輯器開啟。(Linux可能找不到.ssh資料夾,因為這是隱藏的資料夾,按Ctrl + H即可顯示出)

2. 遠端配置

登入gitlab,開啟Settings -> SSH Keys,把檔案id_rsa.pub的內容複製到Key輸入框中,再編寫Title輸入框,title一般寫id_rsa.pub裡的那個郵箱(A和B兩臺電腦就需要新增兩個ssh-key,title可以相同)。

gitlab配置ssh-key

gitlab配置ssh-key2

gitlab配置ssh-key3

A電腦初始化專案

新建資料夾test_git,進入test_git資料夾,新建檔案test.txt,寫入一行A init,

A電腦初始化專案-檔案內容

在test_git資料夾下執行以下命令:

git init
git remote add origin git@gitlab.com:chunjie/test_git.git
git add .
git commit -m "first commit"
git push -u origin master
複製程式碼

git遠端地址換成你的:

git遠端地址

在gitlab上專案裡新建develop遠端分支:

gitlab新建develop遠端分支

gitlab新建develop遠端分支2

A電腦操作1

在test_git資料夾下,新建並切換到develop本地分支,即執行命令:

git checkout -b develop
複製程式碼

修改test.txt檔案,在最後新增一行A develop add 1,

A電腦操作1-檔案內容

在test_git資料夾下執行命令:

git add .
git commit -m "A develop add 1"
git push origin develop
複製程式碼

B電腦操作1

在一個檔案目錄下克隆專案,進入test_git檔案目錄,新建並切換到develop本地分支,拉取最新的develop遠端分支,即在test_git目錄下執行命令:

git clone git@gitlab.com:chunjie/test_git.git
git checkout -b develop
git pull origin develop
複製程式碼

開啟檢視test.txt檔案,

B電腦操作1-檔案內容

修改test.txt檔案,在最後新增一行B develop add 1,

B電腦操作1-檔案內容2

在test_git目錄下執行命令:

git add . 
git commit –m "B develop add 1"
git push origin develop
複製程式碼

A電腦操作2

修改test.txt檔案,在最後新增一行A develop add 2,

A電腦操作2-檔案內容

在test_git資料夾下執行命令:

git add .
git commit -m "A develop add 2"
git pull origin develop
複製程式碼

發現提示衝突了,

A電腦操作2-提示衝突

根據提示是test.txt檔案衝突,因為剛才B電腦也在最後新增了一行B develop add 1,所以需要解決衝突,開啟test.txt檔案,

A電腦操作2-衝突檔案

根據實際情況編輯好test.txt,這裡是再新增一行,即在B develop add 1後再新增一行A develop add 2,

A電腦操作2-解決衝突

然後在test_git資料夾下執行命令:

git add .
git commit -m "解決衝突"
git pull origin develop
git push origin develop
複製程式碼

B電腦操作2

拉取最新的develop遠端分支,即在test_git資料夾下執行命令:

git pull origin develop
複製程式碼

發現test.txt檔案變成了最後新增兩行B develop add 1和A develop add 2。

B電腦操作2-檔案內容

知識點

  • 有時執行git push命令會提示拒絕提交,是因為有人比你先提交了,你需要先git pull,再git push,所以每次git push前都先git pull一下。

    git pull origin develop
    git push origin develop
    複製程式碼
  • 平時要多用git status這個命令,隨時檢視當前git的狀態。

    git status
    複製程式碼
  • 專案中通常需要在根目錄下新增.gitignore檔案,作用是可以忽略指定檔案不提交。 例如:java專案通常可以這樣書寫.gitignore檔案:

    *.iml
    /.idea/
    /bin/
    /log/
    /logs/
    /src/test/
    /target/
    /.apt_generated/
    /.settings/
    /.classpath
    /.project
    /.factorypath
    /.springBeans
    /.DS_Store
    複製程式碼
  • 可以劃分為master、develop、test三個分支,遠端分支和本地分支保持一致,平時在develop分支下開發,完成階段性的內容就把develop分支合併到master分支,master分支要保證是正常的,需要測試就把develop分支合併到test分支,發一次版就增加一個分支release_版本號,把develop分支合併進去。 例如:要把develop分支合併到master分支,就要先切換到master分支,再把develop分支合併到master分支,檢查master分支沒事後,再切換回develop分支進行開發,即執行命令:

    git checkout master
    git merge develop
    git checkout develop
    複製程式碼

補充

發現不少人會問怎樣算解決完衝突,其實怎樣算解決完衝突是由你決定的,你覺得是解決完了就是解決完了,總之你開啟有衝突的檔案進行編輯,你覺得修改好了就是解決完衝突了,然後就可以add-commit-push了,為了減少處理衝突,每完成一個小功能就馬上提交。

ps:發現造成這個疑問往往是使用eclipse用git介面操作時造成的,建議用命令列操作,不要用介面操作。

總結

git常用的命令:

檢視當前的狀態:git status

克隆專案:git clone 遠端地址

新增當前目錄下所有檔案到本地當前分支:git add .

新增指定檔案到本地當前分支:git add 檔案路徑

提交到本地當前分支:git commit -m "提交的內容"

從遠端分支拉取到本地當前分支:git pull origin 遠端分支名

把本地當前分支推送到遠端分支:git push origin 遠端分支名

切換到不存在的本地分支:git checkout -b 本地分支名

切換到已存在的本地分支:git checkout 本地分支名

合併本地指定分支到本地當前分支:git merge 本地分支名

合併遠端指定分支到本地當前分支:git merge origin/遠端分支名

個人微信公眾號

微信公眾號id:chunjie_tech

純潔的技術分享

相關文章