git入門
git筆記會隨著時間進行更正
再次更新:2019/10/09 23:02
幾個概念
- git的三個區(qū)域
- 工作區(qū)
- git的初始化目錄
- 暫存區(qū)
- 從工作區(qū)進一步提交的文件所在區(qū)域
- 本地倉庫
- 從暫存區(qū)進一步提交的文件所在區(qū)域
- 提交流程一般是:工作區(qū)(add)->暫存區(qū)(commit)->本地庫
- 工作區(qū)
命令
-
幫助命令
git help 需要查找的命令
- >git 需要查找的命令 --help
- >man 需要查找的命令
-
初始化本地庫
git init
- 生成.git文件夾 存放git倉庫配置及其數(shù)據(jù)
-
配置本地庫信息
git config
- 環(huán)境參數(shù)
- system
- >git config --system
- 配置信息在主機上的任何用戶和文件夾下都生效
- global
- >git config --global
- 配置信息在主機上的當(dāng)前用戶和及其所屬文件夾下生效
- 不加以上參數(shù)拒贱,只在初始化本地庫的文件夾下生效
- 配置使用者信息
- 用戶名
- >git config user.name 用戶名
- 郵箱
- >git config user.email 用戶郵箱
- 配置以上信息只起到提示作用,與任何平臺信息無關(guān)撬即,但是一般與使用平臺命名一致
-
添加被追蹤文件至?xí)捍鎱^(qū)
git add 文件名(文件夾名)
- 將該文件(文件夾)從工作區(qū)添加到暫存區(qū),并進行追蹤
- >git add .
- 將工作區(qū)的所有文件(文件夾)添加到暫存區(qū),并進行追蹤
- 刪除和移動(重命名)操作不可以被git add
追蹤到,只能通過git rm
和git mv
來提交到暫存區(qū)
-
提交被追蹤文件至本地庫
git commit 文件名(文件夾名)
- 將該文件(文件夾)從暫存區(qū)添加到本地庫,并生成新的記錄
- 參數(shù)
- > -m
- 不用打開編輯器治筒,直接在參數(shù)后添加提交描述
- > -a
- 若該文件曾被提交過桃笙,再次對其操作后,可直接使用該參數(shù)從工作區(qū)提交到本地庫
-
刪除文件(文件夾)
git rm 文件名(文件夾名)
- 刪除工作區(qū)的文件名(文件夾名)闻镶,且提交到暫存區(qū)
- 參數(shù)
- --cached 文件名(文件夾名)
- 刪除暫存區(qū)文件名(文件夾名)的操作
已知:已提交文件test 需求:現(xiàn)在將文件test從本地庫中刪除 方法1: git rm test git commit -m "delete test" 方法2: rm test.txt git commit -a "delete test" 方法1和方法2得到結(jié)果一致
-
移動文件(文件夾)
git mv 文件名1(文件夾名1) 文件名2(文件夾名2)
- 移除工作區(qū)文件名1(文件夾名1),生成文件名2(文件夾名2)域醇,且提交到暫存區(qū)
已知:已提交文件test1 需求:現(xiàn)在將文件test1更名為test2 方法1: git mv test1 test2 git commit -m "rename test1->test2" 方法2: mv test1 test2 git rm test1 git commit -m "rename test1->test2" 方法3: mv test1 test2 rm test.txt git commit -a "rename test1->test2"
-
檢查文件(文件夾)狀態(tài)
- 文件(文件夾)狀態(tài)
- 新增
- 修改
-刪除
-重命名 - 未被提交
- 未存入暫存區(qū)
git status
- 對工作區(qū)和暫存區(qū)文件(文件夾)的狀態(tài)進行檢查顯示
- 參數(shù)
- > -s(--short)
- 簡化檢查結(jié)果顯示
- 文件(文件夾)狀態(tài)
-
檢查文件操作詳細(xì)信息
git diff
- 不加參數(shù)滚澜,查看工作目錄和暫存區(qū)之間的操作差異
- 參數(shù)
- > --cached(--staged)
- 查看暫存區(qū)和本地庫之間的操作差異
-
查看提交歷史記錄
git log
- 顯示所有提交記錄
- >git log HEAD指針位置
- 顯示指定提交歷史記錄
- 參數(shù)
- -p
- 查看提交歷史記錄的詳細(xì)信息
- --stat
- 查看提交歷史記錄的簡化信息
- -數(shù)字n
- 查看前n條提交歷史記錄的信息
- --oneline
- 將每條提交歷史記錄以行顯示,記錄簡化的hash值
- --pretty=oneline
- 將每條提交歷史記錄以行顯示蜕乡,記錄完整的hash值
- --pretty=fomat:"放以下參數(shù)和其他字符組成的字符串"
- 自定義提交歷史記錄的顯示方式
- 參數(shù)
- %s
- 提交時寫的描述
- %an
- 做出文件(文件夾)操作的作者名稱
- %ae
- 做出文件(文件夾)操作的作者郵箱
- %ad
- 作者做出文件(文件夾)操作的時間
- %ar
- 作者做出文件(文件夾)操作距今的時間
- %cn
- 提交者的名稱
- %ce
- 提交者的郵箱
- %cd
- 提交者提交的時間
- %cr
- 提交者提交距今的時間
- > 例如:git log --pretty=format:"提交者:%cn奸绷,距今時間:%cr,提交描述:%s"
- --graph
- 樹狀顯示提交歷史記錄
-
對遠(yuǎn)程庫克隆
git clone https地址(ssh地址)
- 初始化本地庫且拉取遠(yuǎn)程庫的所有歷史版本
- 將最新的提交歷史記錄對應(yīng)的工作區(qū)文件(文件夾)復(fù)制到現(xiàn)在的工作區(qū)
- 添加遠(yuǎn)程倉庫地址別名层玲,與原倉庫的別名一致号醉,可以直接操作并提交
-
.gitignore 文件
- 設(shè)置提交時忽略的文件或文件夾
- 文件內(nèi)容設(shè)置
- 以#開頭的行和空行會被忽略
- 利用正則匹配文件(文件夾)
- 參數(shù)
-
*
- 匹配0或任意個字符
-
?
- 匹配一個任意字符
- []
- 匹配括號里其中一個字符
- !
- 匹配取反的文件(文件夾)
-
- 參數(shù)
-
遠(yuǎn)程倉庫
git remote
- 查看本地遠(yuǎn)程庫別名
- -v
- 查看詳細(xì)的遠(yuǎn)程庫詳細(xì)信息
- >git remote add 遠(yuǎn)程庫別名 對應(yīng)的url(ssh)
- 新建本地遠(yuǎn)程庫別名
- >git remote show 遠(yuǎn)程庫名
- 查看遠(yuǎn)程分支信息
- >git remote rename 舊的本地遠(yuǎn)程庫別名 新的本地遠(yuǎn)程庫別名
- 重命名本地遠(yuǎn)程庫別名
- >git remote rm 需刪除的本地遠(yuǎn)程庫別名
- 刪除本地遠(yuǎn)程庫別名
-
推送分支
git push 遠(yuǎn)程分支的別名 被推送分支名(標(biāo)簽名):推送到的遠(yuǎn)程分支名(標(biāo)簽名)
- 將本地庫文件(文件夾)推送到遠(yuǎn)程分支
- 填寫分支名
- 在遠(yuǎn)程倉庫創(chuàng)建遠(yuǎn)程分支
- 填寫標(biāo)簽名
- 在遠(yuǎn)程倉庫創(chuàng)建標(biāo)簽
- 刪除遠(yuǎn)程分支
- >git push 遠(yuǎn)程分支的別名 --delete 遠(yuǎn)程分支名(標(biāo)簽名)
- >git push 遠(yuǎn)程分支的別名 :遠(yuǎn)程分支名
- 創(chuàng)建遠(yuǎn)程分支
- 創(chuàng)建前提是:需要創(chuàng)建的遠(yuǎn)程分支在本地已存在
- >git push 遠(yuǎn)程分支的別名 新建遠(yuǎn)程分支名:新建遠(yuǎn)程分支名
-
拉取遠(yuǎn)程分支到本地
git fetch 遠(yuǎn)程分支名(標(biāo)簽名)
- 拉取指定遠(yuǎn)程分支(標(biāo)簽)到本地遠(yuǎn)程分支
-
合并分支
git merge 本地分支名
- 將指定本地分支名合并到當(dāng)前分支
- >git merge 合并到的本地分支名 被合并的本地分支名
- 將兩個本地分支合并
- 合并沖突
- 兩個分支若對相同文件的相同位置做了操作,會出現(xiàn)合并沖突
- 解決合并沖突
1. 將出現(xiàn)沖突的文件進行更正
2.git add
3.git commit -m "description"
-
拉取遠(yuǎn)程庫
git pull 遠(yuǎn)程分支別名 被拉去的遠(yuǎn)程分支名(標(biāo)簽名):合并的本地分支名(標(biāo)簽名)
- 是fetch和merge兩個操作的合并辛块,將遠(yuǎn)程分支拉取到本地合并到指定分支上
-
標(biāo)簽
- 種類
- 輕量級標(biāo)簽
- 含附注標(biāo)簽
- 打標(biāo)簽
-
輕量級標(biāo)簽
git tag 標(biāo)簽名
- 為當(dāng)前所處的提交打上輕量級標(biāo)簽畔派,一個提交可以有多個標(biāo)簽
- 含附注標(biāo)簽
- >git tag -a "標(biāo)簽名" -m "description"
- 為當(dāng)前所處的提交打上含附注標(biāo)簽,一個提交可以有多個標(biāo)簽
- 查看標(biāo)簽
- >git tag
- 查看所有標(biāo)簽
- 參數(shù)
- -l 標(biāo)簽名(可正則)
- 查詢指定標(biāo)簽
- a "標(biāo)簽名"
- 指定標(biāo)簽名
- m "description"
- 定義標(biāo)簽描述
- 刪除標(biāo)簽
- >git tag -d 標(biāo)簽名
- 給歷史提交記錄打標(biāo)簽
- >git tag -a "標(biāo)簽名" -m "description"某個歷史記錄的HEAD指針位置
- 推送標(biāo)簽到遠(yuǎn)程分支
- 推送指定的標(biāo)簽
- >git push 遠(yuǎn)程分支別名 被推送的標(biāo)簽名
- 推送全部標(biāo)簽
- >git push 遠(yuǎn)程分支別名 --tags
- 切換標(biāo)簽
- >git checkout 標(biāo)簽名
- 切換分支到標(biāo)簽所處分支润绵,處于游離狀態(tài)不能修改
- >git checkout -b 新建本地分支名 標(biāo)簽名
或
git branch 新建本地分支名 標(biāo)簽名
- >git checkout 該本地分支名
- 重命名標(biāo)簽
- >git tag -d 原來的標(biāo)簽名
- 刪除原來的標(biāo)簽
- >git tag -a "新的標(biāo)簽名" -m "description"
- 創(chuàng)建新的標(biāo)簽
-
- 種類
-
操作本地分支
- 查看分支
git branch
- 查看分支名和當(dāng)前所屬分支
- 參數(shù)
- -v
- 查看分支和當(dāng)前所屬分支的具體信息
- -a
- 查看包含遠(yuǎn)程分支的全部分支信息
- --merged
- 查看已與當(dāng)前分支合并的所有分支
- --no-merged
- 查看未與當(dāng)前分支合并的所有分支
- 創(chuàng)建分支
- >git branch 新本地分支名
- 創(chuàng)建文件(文件夾)為當(dāng)前分支的新本地分支
- >git branch 新本地分支名 被復(fù)制的本地分支名
- 創(chuàng)建指定復(fù)制的本地分支名
- 刪除分支
- >git branch -d 本地分支名
- 刪除已經(jīng)被合并過的分支
- >git branch -D 本地分支名
- 刪除已經(jīng)未合并過的分支
- 查看分支
-
切換本地分支
git checkout 本地分支名
- 切換到指定分支
- 注意切換到指定標(biāo)簽或本地遠(yuǎn)程分支的本地分支處于游離狀態(tài)线椰,不能操作
- >git checkout -b 本地分支名
- 創(chuàng)建新本地分支并跳轉(zhuǎn)到該分支
- >git checkout -b 本地分支名(標(biāo)簽名) 被復(fù)制的本地分支名(標(biāo)簽名)
- 創(chuàng)建新分支且賦予指定分支內(nèi)容并跳轉(zhuǎn)到該分支
-
命令別名
git config alias.命令的別名 "命令名"
- 設(shè)置git命令別名,上面的命令都不包含git
授药,運行命令時必須帶上git
- >git config alias.命令的別名 "!非git命令名"
- 設(shè)置非git命令別名士嚎,運行命令時必須帶上git
-
撤銷操作
git commit --amend
- 上一次提交作廢,重新提交,將本次提交記錄代替上一次的記錄
- >git reset HEAD 文件名
- 重置暫存區(qū)指定文件的操作為最新提交記錄的操作悔叽,用來撤銷暫存區(qū)的失誤文件(文件夾)操作
- >git checkout -- 文件名(文件夾)
- 重置工作區(qū)文件的操作為暫存區(qū)的操作莱衩,用來將暫存區(qū)文件操作覆蓋原來對工作區(qū)的失誤操作
-
版本重置
git reset HEAD指針位置
- 暫存區(qū)和本地庫版本重置到所指定位置
- 參數(shù)
- -soft
- 重置本地庫
- -mixed(默認(rèn))
- 重置本地庫和暫存區(qū)
- -hard
- 重置工作區(qū),暫存區(qū)和本地庫
- 歷史記錄改變
- 徹底回退娇澎,使用git log
無法查看重置位置之后的歷史記錄
-
版本回退
git revert HEAD指針位置
- 反向回溯笨蚁,每次進行新的提交,不同于reset
趟庄,revert
歷史記錄只新增
-
變基
git rebase 以該本地分支為基的分支
- 以指定分支為基括细,合并當(dāng)前分支
- >git rebase 以該本地分支為基的分支 被合并的分支
- 以指定分支為基合并指定分支
- 與merge
操作區(qū)別
-merge
是將兩指定分支合并,建立新提交生成新的提交記錄
-rebase
是將多余變更記錄進行記錄戚啥,在基分支上進行重演奋单,生成新的提交記錄
- 一般兩者得到結(jié)果一致,但使用方法不同
補充1:若大家覺得我寫得還行猫十,可以去我的github里star一下览濒,為了以后找工作做準(zhǔn)備呆盖,無論是否點贊,謝謝大家看完本文