一、Git介紹
Git是一個免費的、開源的分布式版本控制系統,可以快速高效地處理從小型到大型的各種項目。
git易於學習,占地面積小,性能極快,它具有廉價的本地庫,方便的暫存區域和多個工作流分支特性,其性能優於Subversion、CVS、Perforce和ClearCase等版本控制工具
版本控制:版本控制最重要的作用是記錄一個文件的修改歷史記錄,並且根據該記錄可以切換到對應的歷史版本,這個也是由個人開發到團隊開發重要的工具。
集中式版本控制系統:具有一個統一的中央伺服器,裡面存放著項目的源碼。各個客戶端都從該伺服器中拉取代碼和上傳自己編寫的代碼到伺服器中。
優點:各個客戶端可以查看其他客戶端在該項目中做了什麼,一定程度上了解項目的進度。同時,管理員可以控制各個程式設計師的權限。
缺點:無法應對中央伺服器的單點故障問題,當中央伺服器宕機後,各個客戶端都不能提交代碼和拉取代碼,同時在宕機的期間,做不到版本的歷史記錄。
分布式版本控制系統:每個客戶端都是一個版本庫(本地庫),各個客戶端維護自己的版本歷史記錄。各個客戶端的協作是通過使用遠程庫(github等)進行的,push把代碼推送到遠程庫中,pull把遠程庫的代碼拉取下來。
優點:解決了集中式版本控制的缺點。在遠程庫宕機的情況下(雖然說這個概率極低),客戶端還是能進行開發的,因為版本的控制是在本地進行的。同時,每個客戶端保存的是整個項目,包括歷史記錄,使得更加安全。
Git的工作機制
代碼託管中心(遠程庫):
- GitLab(區域網級別的,不與外部共享)
- GitHub(網際網路級別,國外網站,訪問速度會比較慢)
- Gitee碼雲(網際網路級別,國內網站,訪問速度會相對快)
二、Git安裝
三、Git命令
#設置用戶簽名
#git首次安裝必須進行配置,是用來區分不同操作者身份,確認本次提交是誰操作的。但該配置與github的帳號沒有任何關係.
git config --global user.name 用戶名
git config --global user.email 郵箱
#初始化本地庫 讓該目錄受git進行管理
git init
#查看本地庫狀態 查看當前所在的分支,提交的記錄,未被追蹤的文件(未被add的文件)
git status
#從工作區添加到暫存區
git add 文件名
#從暫存區中刪除
git rm --cached 文件名
#從暫存區中提交到本地庫中
git commit -m "提交信息" 文件名
#查看提交記錄
git reflog
#查看詳細提交記錄
git log
#版本穿梭
#1.查看版本歷史記錄
git reflog
#2.選擇一個版本進行穿梭
git reset --hard 版本號
底層:head指針指向分支,分支指針指向版本號。當版本號發生變化時,分支指針指向對應的版本號
四、Git分支
4.1分支的概念
在版本控制過程中,同時推進多個任務,我們就可以創建每個任務的單獨分支,使用分支意味著程式設計師可以把自己的工作從開發主線上分離出來,開發自己分支的時候,不會影響主線分支的運行,簡單理解就是一個分支就是一個單獨的副本(底層還是指針的使用)
4.2使用分支的好處
(1)同時推進多個任務,提高開發效率
(2)各個分支開發的過程中互不干擾,如果一個分支開發失敗,不會影響其他分支,只需刪除失敗的分支就可以重新開始
4.3分支的操作
#查看分支
git branch -v
#創建分支
git branch 分支名稱
#分支切換
git checkout 分支名稱
#合併分支 將某個分支合併到當前的分支上
git merge 分支名稱
#產生代碼衝突的原因:
#合併分支時,當兩個分支在同一個文件的同一個位置發生修改時,git無法判斷使用哪一個時,就需要人為決定新代碼的內容
#解決衝突的方法:
#(1)merge後手動解決衝突
#(2)添加到暫存區 git add .
#(3)提交到本地庫,但要注意的是,不能帶文件名 git commit -m "提交信息"
五、Idea集成Git
(1)配置git的忽略文件
- 在家目錄中添加git.ignore文件
- 在.gitconfig中配置git.ignore文件
# Windows image file caches
thumbs.db
ehthumbs.db
# Folder config file
Desktop.ini
# java class file
*.class
# Package Files #
*.war
*.ear
/target
/.settings
/.classpath
/.project
/.idea
# ignore Maven generated target folders
target
out
# ignore eclipse files
.project
.classpath
.settings
.factorypath
.metadata
.idea
*.iml
# ignore log files
*.log
[user]
name = xiaoxian
email = xxxxxxxx[你的郵箱]
[core]
excludesfile = [git.ignore文件位置]
(2)在idea中配置git
(3)初始化項目
六、GitHub
1.創建遠程庫
#創建別名
#(1)查看別名
git remote -v
#(2)添加別名
git remote add 別名 github遠程地址
2.代碼推送 Push
#推送本地庫
git push 別名 本地庫分支名
#在團隊協作中,如果要推送代碼到遠程庫中需要遠程庫管理者添加該程式設計師的github
#在跨團隊協作中,首先跨團隊要fork該項目,然後對代碼進行修改,修改完畢後創建一個pull request.該項目的管理者就會審核該代碼,沒問題後再合併代碼。
3.代碼拉取 Pull
#遠程庫拉取
git pull 別名 遠程庫分支名
4.代碼克隆 Clone
#將遠程庫的代碼進行克隆
git clone 遠程庫地址
#clone會進行的操作:
#1.拉取代碼
#2.初始化本地庫
#3.創建別名
5.SSH免密登錄
#生成ssh公鑰和私鑰
ssh-keygen -t rsa -C [你配置的郵箱]
#將公鑰複製到github中,就可以免密登錄了