git本地結(jié)構(gòu)
git的代碼托管中心
????GitHub
? ? 碼云
? ? 代碼托管中心維護(hù)遠(yuǎn)程庫
? ? ? ? 》團(tuán)隊(duì)內(nèi)部協(xié)作
團(tuán)隊(duì)外跨團(tuán)隊(duì)協(xié)作
git命令行操作
本地庫初始化
git init 初始化一個(gè)git倉庫?
命令:git add
? ? 效果
設(shè)置簽名
形式
? ? 用戶名:
email地址:
作用:區(qū)分不同開發(fā)人員的身份
辨析:這里設(shè)置的簽名,和登錄的遠(yuǎn)程庫的賬號(hào),密碼沒有任何關(guān)系
設(shè)置簽名命令:
項(xiàng)目級(jí)別/倉庫級(jí)別:僅在當(dāng)前本地庫有效
git config user.name 用戶名
git config user.email 郵箱
系統(tǒng)用戶級(jí)別:登錄當(dāng)前操作系統(tǒng)用戶范圍
git config --global 用戶名
git config --global 郵箱
兩者都有時(shí)采用項(xiàng)目級(jí)別
? ? ? ? ? ? 如果只有系統(tǒng)級(jí)別的簽名,那就以系統(tǒng)級(jí)別的簽名為主
? ? ? ? ? ? 兩個(gè)都沒有,不可以
git status
查看歷史版本記錄
git log 最完整的形式
多屏幕顯示的控制方式
空格=向上翻頁
b= 向上翻頁
q= 退出
git log --pretty=oneline
git log --oneline
git reflog
HEAD@{移動(dòng)到當(dāng)前版本需要多少步}
版本前進(jìn)后退
git reset --hard 索引值
git reset --hard a49h04
使用^只能往后,不能往前
git reset --hard HEADA^后退一個(gè)版本
git reset --hard HEADA^^^回退三個(gè)版本
使用~也是只能后退
git reset --hard HEADA~3 后退三個(gè)版本
reset 命令的三個(gè)參數(shù)對(duì)比
? ? --soft:
? ? 僅僅是在本地庫移動(dòng)HEADA指針
? ? --mixed
? ? 在本地庫移動(dòng)庫HEADA指針
? ? --hard
? ? 在本地庫移動(dòng)庫移動(dòng)HEADA指針
? ? 重置緩存區(qū)
? ? 重置工作區(qū)】
rm aaa.txt
刪除文件能找回了
前提:刪除前,文件存在時(shí)的狀態(tài)提交到本地庫
? ? ? ? 操作:git reset --hard[指針位置]
? ? ? ? ? ? ? ? 指針位置:歷史記錄或者當(dāng)前位置
? ? ? ? ? ? ? ? 刪除操作已經(jīng)提交到本地庫:指針位置指向歷史記錄
? ? ? ? ? ? ? ? 刪除操作尚未提交到本地庫:指針位置使用HEAD
比較文件差異
? ? git diff 文件名
? ? ? ? 將工作區(qū)的文件和暫存區(qū)的文件進(jìn)行比較
? ? git diff 本地庫的歷史版本 【文件名】
? ? ? ? 將工作區(qū)的文件和本地庫歷史記錄比較
? ? 不帶文件名進(jìn)行多個(gè)比較
git diff apple.text
git 的分支
在版本控制中,使用多個(gè)線路進(jìn)行并行開發(fā)
分支的好處
同時(shí)并行推進(jìn)多個(gè)功能開發(fā),提高開發(fā)效率
各個(gè)分支在開發(fā)過程中,如果某一個(gè)開發(fā)分支失敗,不會(huì)造成其他分支任何影響失敗的分支刪除重新開發(fā)即可。
分支的具體操作
創(chuàng)建分支
? ? git branch 分支名字
查看分支
? ? git branch -v
切換分支
? ? git checkout 分支名
合并分支
? ? 切換到接受的分支上(被可并,增加新內(nèi)容)
? ? git checkout 分支名稱
? ? 執(zhí)行一個(gè)merge 操作
????git merge hot_fix(分支名稱)
刪除分支
git branch -d bug//刪除bug分支
處理沖突
? ? 編輯文件,刪除特殊符號(hào)
? ? 把文件修改到滿意的程度,保存退出
? ? git add 文件名
? ? git commit -m '日志信息'
? ? 注意:此時(shí)commit 一定不能帶具體的文件名
拉取
pull = fetch+merge
git fetch 遠(yuǎn)程庫地址的別名 遠(yuǎn)程分支名
git merge 遠(yuǎn)程庫地址別名/遠(yuǎn)程分支名
6.8 解決沖突
? ? 要點(diǎn)
? ? ? ? 如果不是基于GITHub遠(yuǎn)程庫的最新版做的修改,不能推送,必須先拉取。
? ? ? ? 拉取下來后如果進(jìn)入沖突狀態(tài),則按照‘分支沖突解決’操作解決即可。