本地庫操作
基本命令
- 初始化本地庫 git init
- 設(shè)置簽名:區(qū)分不同開發(fā)人員的身份 ,倉庫級別/項(xiàng)目級別:
git config user.name feng
git config user.email feng@aaa
系統(tǒng)用戶級別,采用就近原則,項(xiàng)目級別優(yōu)于項(xiàng)目級別
git config --global user.name feng
git config --global user.email feng@123
查看狀態(tài),查看工作區(qū),暫存區(qū)的狀態(tài):git status
加入暫存區(qū)[新建或修改的文件]: git add a.txt
從暫存區(qū)撤回【暫存區(qū)可以撤回,前提是要add操作后,如果修改的文件,沒有執(zhí)行add不行】:git rm --cached a.txt
從暫存區(qū)提交到本地庫:git -m '注釋' commit a.txt
版本的前進(jìn)、后退:
查看歷史記錄
git log 看起來很亂,可以格式化:git log --pretty=oneline,每次提交以一行顯示。
git log --oneline 簡化顯示
git reflog 多一些顯示內(nèi)容,顯示回退到每個版本要移動的步驟
執(zhí)行版本前進(jìn)后退
- 基于索引【指針】
git reset --hard 索引值
reset有三個參數(shù):在本地庫移動head,重置暫存區(qū),重置工作區(qū)
hard,
soft:靜靜在本地庫移動指針,不會動暫存區(qū)和工作區(qū)
mixed【混合】:會在本地庫移動head指針,也會重置暫存區(qū) - 基于~符合:
- 基于^符號:只能往后,不能往前
刪除文件并找回【文件存在時的狀態(tài)提交到了本地庫】
- image.png
- rm命令刪除了已經(jīng)提交到本地庫的一個文件,刪除后,需要git add 文件 到暫存區(qū),然后在執(zhí)行g(shù)it commit 刪除文件即可。
- 恢復(fù)1:執(zhí)行g(shù)it reflog,找到刪除前的一個提交版本id,執(zhí)行g(shù)eit reset --hard xxxx即可找回
- 恢復(fù)2:【刪除操作未提交到本地庫】如果文件納入了本地庫管理【即,執(zhí)行了git commit操作】,然后又執(zhí)行了rm 文件,又再執(zhí)行了git add 文件,此時如果想恢復(fù)文件,可以執(zhí)行g(shù)it rest --hard HEAD命令即可
- 【文件存在時的狀態(tài)沒有提交到了本地庫】
- rm 文件后,執(zhí)行g(shù)it status查看狀態(tài),執(zhí)行g(shù)it rm 文件 ,即可刪除,無須git commit,因?yàn)榇藭r還為納入版本管理
- git rm 命令,不能直接刪除文件,是刪除暫存區(qū)的,或者是執(zhí)行了rm 文件后,可以用git rm 文件從暫存區(qū)刪除
2.git reset --hard [指針位置] :
指針位置指向歷史記錄;
指針位置使用 HEAD;
比較文件差異
- git diff [文件名] 將工作區(qū)中的文件和暫存區(qū)進(jìn)行比較
- git diff [本地庫中歷史版本] [文件名]:將工作區(qū)中的文件和本地庫歷史記錄比較
分支管理
分支操作
- 創(chuàng)建分支:git branch 分支名
- 查看分支:git branch -v
- 切換分支:git checkout 分支名
- 合并分支:
- 進(jìn)入要合并的分支(如開發(fā)分支合并到master,則進(jìn)入master目錄)
git checkout master
git pull - 查看所有分支是否都pull下來了
git branch -a - 使用merge合并開發(fā)分支
git merge 分支名 - 查看合并之后的狀態(tài)
git status - 有沖突的話,通過IDE解決沖突;
- 解決沖突之后,將沖突文件提交暫存區(qū)
git add 沖突文件 - 提交merge之后的結(jié)果
git commit
如果不是使用git commit -m "備注" ,那么git會自動將合并的結(jié)果作為備注,提交本地倉庫; - 本地倉庫代碼提交遠(yuǎn)程倉庫
git push
git將分支合并到分支,將master合并到分支的操作步驟是一樣的。
遠(yuǎn)程庫操作
查看遠(yuǎn)程庫信息
- git remote -v 查看當(dāng)前所有遠(yuǎn)程地址別名
- eg:origin https://git.test.net/test/test-server.git (fetch)
- origin https://git.test.net/test/test-server.git (push)
- 添加遠(yuǎn)程庫別名:git remote add [別名] [遠(yuǎn)程地址]
- git remote add origin https://git.test.net/test/test-server.git
- 推送:git push [別名] [分支名]
- git push origin dev
- git push origin dev:dev
- 克隆 git clone 遠(yuǎn)程地址
- 完整的把遠(yuǎn)程庫下載到本地
- 創(chuàng)建 origin 遠(yuǎn)程地址別名
- 初始化本地庫
- 拉取相關(guān)操作
- pull=fetch+merge
-
fetch是把遠(yuǎn)程庫的內(nèi)容抓取到本地庫,并沒有更新到工作區(qū)里面,如果想看抓取下來的內(nèi)容,可以使用
git checkout origin/master 命令后,然后可以使用cat等命令查看本地庫內(nèi)容:
image.png
查看完后,可以在使用git checkout dev切換回來
image.png -
合并本地庫的內(nèi)容到自己的工作區(qū)【本地庫的master到本地的dev分支(當(dāng)前分支)】:
image.png
- git fetch [遠(yuǎn)程庫地址別名] [遠(yuǎn)程分支名]
- git merge [遠(yuǎn)程庫地址別名/遠(yuǎn)程分支名]
- git pull [遠(yuǎn)程庫地址別名] [遠(yuǎn)程分支名]
- 沖突解決
- 如果不是基于 GitHub 遠(yuǎn)程庫的最新版所做的修改,不能推送,必須先拉
取 - 拉取下來后如果進(jìn)入沖突狀態(tài),則按照“分支沖突解決”操作解決即可



