文章目錄
團隊負責人: 可以全面瞭解Git
個人開發者: 根據需要可以只看GitHub和Git使用
團隊成員: 根據情況可以只看Git使用即可,如果有興趣可以充分了解一下Git
Git簡介
玩過MOBA類型遊戲的人應該都能理解,一個人靠譜能做的很好,但一羣人靠譜才能走的更遠。對於多個程序員協同開發項目想要提高效率,必然離不了一個完善的協同工具,而Git就是協同工具中的佼佼者之一。
Git:開源的分佈式版本控制系統,相較於SVN、CVS這樣的集中式版本控制系統,分佈式對服務器的依賴較小。
適用對象:
- 開源軟件的開發。
- 異地的多人協作。
- 沒有固定辦公地點的小團隊
注:Git和GitHub並不是一個東西
Git你可以理解爲一個軟件,可以安裝在你的個人電腦、服務器上,並且支持windows,Linux,Mac等主流系統。而GitHub是一個安裝了這個軟件的服務器,你可以去這個服務器中創建自己的Git項目,並且這個服務器提供很多免費的服務可以去使用。
說的通俗易懂一些我們可以假設Git是一隻雞的話,哪GitHub就是一隻香噴噴的炸雞,你不需要自己加工,直接喫就好了。身爲全球最大的同性交友網站(GitHub)我只能用雞你太美來形容。
Git的搭建
自行搭建Git(創建Git私服)
自行搭建Git不適用於新手,如果你是初次使用Git,可以看下方使用第三方平臺的Git(大多數時候外賣的炸雞都比自己做的好喫,因爲人家是專業的)
Git搭建最好是在服務器上,因爲相對於我們個人PC,服務器運行更加穩定,以外情況較少,國內有很多服務器,比如說騰訊雲,阿里雲,百度雲,華爲雲等等,在這裏就對服務器不做過多贅述了。
首先我們在服務器上安裝git
安裝Git
centos的安裝命令爲:sudo yum install git
我之前已經安裝完成了
配置Git用戶
我們最好創建一個新用戶用來管理Git,使用默認的root超管創建git會有較大的安全風險。
groupadd Git
創建一個名叫Git的組
adduser -g Git git
創建一個名叫git的用戶並添加到Git組中
passwd git
給git用戶添加密碼
創建倉庫
當切換到git用戶下後,我們需要初始化一個git倉庫
su - git
切換到git用戶
git init --bare field.git
初始化倉庫(field是倉庫名,這個名字根據自己的需要起就好)
這時候倉庫就已經搭建完成了,倉庫的地址爲git@服務器ip:/home/git/倉庫名.git
之後同步要用到此地址
免密處理
完成上述操作後,git可以算配置完成了,但是這時候git同步的時候需要輸入密碼,比較繁瑣,我們可以對指定的人做免密處理。
mkdir .ssh
創建.ssh文件夾
touch authorized_keys
創建authorized_keys文件
vim authorized_keys
打開authorized_keys文件,並將公鑰存入其中
可是使用echo ssh-rsa 公鑰 >> /home/git/.ssh/authorized_keys
方式來將公鑰寫入其中
su - root
切換回超管用戶開始賦權
sudo chmod 700 /home/git/.ssh/
改變此路徑的權限爲只有屬主有讀、寫、執行權限。
sudo chmod 600 /home/git/.ssh/authorized_keys
改變此路徑的權限爲只有屬主有讀寫權限。
vim /etc/ssh/sshd_config
使用vim打開ssh的配置文件
刪除下列幾行代碼的註釋(如果在此文件中沒有找到可以自行添加)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
service sshd restart
重啓ssh服務
生成公鑰
這個公鑰很重要,GitHub如果需要免密也要用到這個公鑰Linux系統免密登陸也需要此公鑰
公鑰是做免密處理的電腦的公鑰,下列演示如何在windows系統中生成公鑰,首先打開windows系統的powershell(cmd也可),輸入ssh-keygen,然後一路回車,直到執行完畢
第三方Git平臺
執行搭建Git較爲繁瑣,我們國內常用的Git有GitHub與碼雲
GitHub簡介
GitHub:全球最大的同性交友網站。
缺點 :
- 中國使用GitHub速度同步較慢(但代碼普遍不大,速度無需過高)
- 部分地區無法正常使用GitHub(比如新疆)
優勢:
- 功能強大且完善絕大多數功能都能免費使用。
- 針對學生有非常不錯的待遇,GitHub的學生包基本上可以滿足絕大部分程序員(比如說免費私有庫,免費域名,各種IDE專業版免費使用)
GitHub學生包包含福利如果需要領取可以看我的寫的如何領取GitHub學生包的博客
使用GitHub創建並同步項目
GitHub使用較爲簡單,點擊右上角‘+’的創建選擇創建新存儲庫
輸入倉庫名後即可創建倉庫
創建項目結束後GitHub會跳轉到一個新的頁面上,如下圖所示[email protected]:xun-mi-git/auto_look_web_classroom.git
就是GitHub提供的用戶名與地址,之後同步項目就是使用此地址,需要記住此地址
GitHub免密處理
打開設置
在設置中選擇ssh並填寫公鑰,如何生成公鑰在之前已經說明,再次就不多贅述了
Git的使用
下載與安裝git
Git下載(新疆等地區可能無法打開,可以在百度上找國內的git資源下載)
和大多數軟件一樣,先同意協議,然後選擇安裝路徑
下一步推薦如圖所示選擇
原文 | 翻譯 |
---|---|
Additional icons | 附加圖標 |
On the Desktop | 在桌面上(在桌面創建圖標,基本用不到) |
Windows Explorer integration | Windows資源管理器集成(集成到右鍵菜單) |
Git Bash Here | 控制檯集成到右鍵菜單 |
Git Gui Here | 圖像界面繼承到右鍵菜單(Git的GUI非常難用,不建議使用GUI) |
Git LFS (Large File support) | Git LFS(大文件支持) |
Associate git* configuration files with the default text editor | 將git*配置文件與默認文本編輯器關聯 |
Associate sh files to be run with bash | 將要運行的sh文件與bash關聯 |
Use a true Type font in all console windows | 在所有控制檯窗口中使用true Type字體 |
Check daily for git for windows updates | 每天檢查git以獲取windows更新 |
這裏是Git的默認編輯器,默認是vim,如果你不瞭解Linux的vim,相信我,vim對於新人來說簡直就是噩夢(您可能會因爲vim榮獲祖安文科狀元)。推薦使用vscode(微軟的一款非常強大的編輯器,幾乎支持所有的編程語言,而且非常小巧)
下一步是有關環境變量的,這裏一定要選第二個(默認就是第二個),第二個是允許第三方軟件調用Git(比如我常用的pycharm與vscode都帶非常棒的git組件,比原生的好用很多)
接下來分別是與安全認證有關的兩個,第三個選擇控制檯時候推薦選擇windows控制檯,最後一個推薦的三個組件也都是提示效率和安全的,都較爲有用,可以全部安裝。
同步倉庫
同步語法: git clone 倉庫地址
需要同步倉庫需要在你的電腦中的一個文件夾中(找一個或者新建一個自己能找到的文件夾用於git項目同步),在文件夾中點擊右鍵選擇Git Bash Here
或者在powershell中cd到此文件夾中也可。
最基礎的Git方法
常用git方法 | 作用 |
---|---|
git init | 初始化Git倉庫 |
git remote | 查看倉庫名稱(加上-v參數可以查看倉庫詳情信息git remote -v ) |
git remote add url | 添加一個遠程倉庫(git remote)查看當前有哪些分支 |
git add | 將文件添加到本地Git暫存區git add 文件名,可以將新創建的git添加到本地倉庫中 git add . : 提交新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件 git add -u : 提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new) git add -a : 提交所有變化 |
git commit | 將文件同步到本地分支,git commit 的-m參數非常重要,用來備註本次,比如git commit -m "尋覓的首次同步" |
git push | 將本地數據同步到服務器默認推送到當前分支,可以使用 ‘git push origin 分支名’ 推送到指定分支中。 |
git pull | 從數據庫中拉去最新版本(每次去使用項目時候推薦都進行一次拉去) |
初次使用git
Git基礎配置
設置用戶名與郵箱,這一步很重要
git config --global user.name "你的暱稱"
git config --global user.email "你的聯繫郵箱"
新倉庫
對於一個新的空倉庫來說,推薦創建一個README.md(git開源項目不成文規定README.md爲說明文檔,並非強制要求),我當前使用pycharm創建了一個項目並用git控制檯同步到一個空倉庫。
echo "# 項目名稱" >> README.md
git init
git add .
git commit -m "首次同步"
git remote add origin git@ip地址:/home/git/庫名.git
git push -u origin master
非空倉庫
對於已經有項目的git庫我們直接執行[email protected]:/home/git/text.git
即可拉去
當倉庫已經存在本地後就可以用git add
、git commit
、git push
、 git pull
這幾個命令同步倉庫
這裏簡單提一下,git pull = git fetch + git merge
, git fetch
的作用是將服務器中的內容同步到本地,git merge
的作用是將本地和服務器中,直接使用git pull
他會將服務器中的內容拉去下來後直接自動和本地的進行合併,如果有衝突的地方則拋出衝突需要手動解決。
常用的Git方法
Git分支
分支是一個很常用的功能,我們用的軟件,遊戲,系統,他們都有不同的版本,比如說:測試版,體驗版,穩定版,專業版,免費版,企業版
不同的分支有着不同的功能,有些分支在後期還需要進行合併,比如說測試版在使用測試並修復bug後需要併入穩定版中以供使用。
Git可以創建併合並分支
git分支使用命令 | 作用 |
---|---|
git branch | 查看所有分支,並在當前分支前用*標記 |
git branch [分支名] | 創建分支 git branch 'dev' (ps :dev是development開發英語的縮寫) |
git branch -d [分支名] | 刪除分支 git branch -d 'text' (ps :dev是development開發英語的縮寫) |
git checkout [分支名] | 進入分支 git checkout 'dev' (使用git checkout -b 'text' 可以直接創建並進入分支) |
git switch [分支名] | 與git checkout效果相同(創建並新分支需要使用-c的參數git switch -c 'text' ) |
git merge [分支名] | 將分支合併到master分支上 |
解決衝突
命令行解決衝突效果並不會,推薦大家使用可視化軟件解決衝突的問題,如果想要了解如何在命令行解決衝突可以查看廖雪峯Git教程博客有詳細的Git命令行操作的方式,由淺入深非常詳細
Git集成組件的使用
命令行操作是比較炫酷,但是個人感覺有些地方使用可視化會有更高的效率,我一直認爲能做到簡單就已經不簡單了,點點鼠標能解決的事情何必去敲一堆命令呢。如果是第一次使用集成組件之前需要先去設置一下名稱和郵箱,然後去拉去一下數據。
vscode的Git組件
使用vscode打開拉去的文件夾
vscode不需要下載任何插件,自帶的Git組件就能完成大部分的Git操作,打開一個項目會在側欄選擇如下圖所示的圖標,其中就是git操作欄。
常規拉去推送同步操作
我們如果Git文件夾中有變動,這裏都會有對應的顯示,我們可以點擊文件中的+號,這相當於對文件進行了git add
或者點擊更改處的+號,相當於git add -a
+號左邊的相當於撤回。
和命令行的add相同,我們接下來我們需要將緩存區的文件提交到本地分支
點擊對勾後,我們更改文件和緩存區已經沒有文件了,這時候切記,不要忘記將保存的東西推送到服務器中,這樣其他人才能拉去。
vscode右下角的分支邊上有個一個同步按鈕,這個相當於先執行git pull
在執行一下git push
和數據庫進行一次數據同步,比較好用
這裏我要給大家推薦一個vscode的git擴展插件比較好用,下載此插件可以看到每個人在什麼時候同步了什麼,有哪些分支等等。
使用vscode處理衝突
當發生衝突,vscode會有如下提示(其中綠色爲本地要提交的代碼,藍色爲服務器中的代碼)
如果你發現服務器中的代碼已經過時,需要使用你的進行完全替換,這時候你就可以選擇採用當前更改。
- 採用當前更改:保留你寫的代碼(上圖中綠色的代碼)
- 採用傳入的更改:保留服務器中的代碼(上圖藍色區域的代碼)
- 保留雙方的代碼:顧名思義,兩個都保存,會將兩行都進行保存。
使用vscode自帶git常見報錯解決方案
當你選擇保留當前更改之後,在進行提交你會發現推送的時候git push
會報如下錯誤,你根據提示去選擇拉去
則會報如下錯誤。這是因爲你之前提交已經把你做的更改進行了提交,你選擇保留你代碼後,項目文件沒有發送變化,vscode就無法再次幫你進行常規提交,因爲他認爲他已經提交了,但Git衝突卻需要你在此進行提交來覆蓋服務器中過時的代碼
解決這個問題我們可以打開設置找到git,選擇強制提交,之後進行一次強制提交即可但需要注意的是強制提交會覆蓋服務器中原本的代碼,一定要慎重使用,一定要確定你要覆蓋的代碼是過時的無用的在進行覆蓋!!!
pycharm的Git組件
常規拉去推送同步操作
pycharm的常規操作較爲簡單,只需點擊右上角的提交更改即可進行操作,其中git add
和git commit
pycharm將其優化到一起進行了執行
在右上角有拉去按鈕,在右下角存在切換分支和對分支進行一些操作的可視化界面
如果提交的時候沒有選擇git push 可以在如下圖所示的地方選擇git push並且右上角有一個提交路線圖,製作精良,可以參考使用
使用pycharm處理衝突
出現如下圖所示對話框可能就是出現了衝突了,這時候我們一般都點MERGE(合併),因爲REBASE(重做),和取消效果相似,我們需要合併後查看哪裏出現的衝突並進行解決
這裏的可視化界面相較於vsc更加人性化,更加簡便,我個人非常喜歡。