Git的優勢
大部分操作在本地完成,不需要聯網
完整性保證
儘可能添加數據而不是刪除或修改數據
分支操作非常快捷流暢
與 Linux 命令全面兼容
Git的結構
工作區:提交代碼,新建文件;通過git add提交到暫存區
暫存區:臨時存儲;通過git commit提交到本地庫
本地庫:存放歷史版本
代碼託管中心
維護遠程庫
局域網:GitLab服務器
外網:碼雲,GitHub
本地庫初始化
1,初始化
git init
.git中存放的是本地庫的相關的子目錄和文件,不能隨意修改
帶.的都是隱藏文件,查看系統隱藏文件 ls -lA|less
2,設置簽名
形式:tom
Email:[email protected]
作用:區分不同開發人員的身份
辨析:簽名與登錄遠程庫的賬號信息無關
命令:
項目級別/倉庫級別,僅在當前本地庫有效
git config user.name tom_pro
git config user.email [email protected]
信息保存位置:./.git/config 文件
系統用戶級別
git config --global user.name tom_glb
git config --global [email protected]
信息保存位置:~/.gitconfig 文件
**優先級(就近原則):項目級別的簽名優先於系統用戶級別**
3,基本操作
git status:查看工作區和暫存區的狀態
git add[file name]:將工作區的“新建/修改” 放到暫存區
git rm --cached [fileName]:從暫存區刪除
git commit [fileName]:從暫存區提交到本地庫
***未修改不能重複添加***
在VIM編輯器裏面進行修改(安裝的時候確定)
或者是git commit -m+“修改信息”+文件名
insertions(+):添加的行數
git reset HEAD <fileName>
git restore --staged <fileName>
版本的管理
1,查看日誌
git log
git log --pretty=oneline
git log --oneline
git reflog
當數據太多的時候,多屏顯示操作:
空格向下翻頁,b向上翻頁,q退出
2,前進與回退
基於索引值操作
git reset --hard +索引值(reflog中的hash值)
使用^符號:只能往後不能向前
git reset --hard HEAD^(一個 ^ 往後退一步)
使用~符號:只能後退
git reset --hard HEAD~n(後退n步)
3,reset命令的三個參數對比
–soft 參數
僅在本地庫移動HEAD指針
–mixed 參數
在本地庫移動指針
刷新暫存區
–hard參數
在本地庫移動指針
刷新暫存區
刷新工作區
4,刪除並找回
前提:刪除前,文件存在時的狀態提交到本地庫
操作:git reset --hard[指針位置]
刪除操作已經提交到本地庫:指針位置指向歷史記錄
刪除操作尚未提交到本地庫:指針位置使用HEAD
5,比較文件差異
git diff [文件名]
將工作區中的文件和暫存區進行比較
git diff [本地庫中歷史版本] [文件名]
將工作區中的文件和本地庫歷史記錄比較
不帶文件名比較多個文件
Git分支
分支:在版本控制過程中,使用多條線同時推進多個任務
分支的好處:
同時並行推進多個功能開發,提高開發效率
各個分支在開發過程中,如果不做合併,如果某一個分支開發失敗,不會對其他分支有任 何影響。失敗的分支刪除重新開始即可。
分支操作:
創建分支:git branch + 分支名
查看分支:git branch -v
切換分支:git checkout +分支名
合併分支
切換到接受修改的分支上
git checkout [被合併分支名]
執行merge
git merge [有新內容分支名]
解決衝突
第一步:編輯文件,刪除特殊符號
第二步:把文件修改到滿意的程度,保存退出
第三步:git add [文件名]
第四步:git commit -m "日誌信息"
注意:此時 commit 一定不能帶具體文件名