前言
git是一個開源的分散式版本控制系統,用於敏捷高效地處理任何或小或大的專案,是團隊協作開發的必備技能,下圖是git的工作流程。
註冊
- gitlab:gitlab.com
- github:github.com
- osc:gitee.com
下面以gitlab為例,註冊好賬號後,新建專案,命名為test_git。
下面請準備兩臺電腦,沒有兩臺電腦可以用虛擬機器代替
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可以相同)。
A電腦初始化專案
新建資料夾test_git,進入test_git資料夾,新建檔案test.txt,寫入一行A init,
在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遠端地址換成你的:
在gitlab上專案裡新建develop遠端分支:
A電腦操作1
在test_git資料夾下,新建並切換到develop本地分支,即執行命令:
git checkout -b develop
複製程式碼
修改test.txt檔案,在最後新增一行A develop add 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檔案,
修改test.txt檔案,在最後新增一行B develop add 1,
在test_git目錄下執行命令:
git add .
git commit –m "B develop add 1"
git push origin develop
複製程式碼
A電腦操作2
修改test.txt檔案,在最後新增一行A develop add 2,
在test_git資料夾下執行命令:
git add .
git commit -m "A develop add 2"
git pull origin develop
複製程式碼
發現提示衝突了,
根據提示是test.txt檔案衝突,因為剛才B電腦也在最後新增了一行B develop add 1,所以需要解決衝突,開啟test.txt檔案,
根據實際情況編輯好test.txt,這裡是再新增一行,即在B develop add 1後再新增一行A develop add 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。
知識點
-
有時執行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