Git簡單介紹
-
什么是Git
- Git是一款源代碼管理工具(版本控制工具)
什么又是源代碼:凡是由我們手寫的代碼都稱之為源代碼
-
源代碼有必要管理起嗎?
有必要嘲玫,因為人工的去處理不同的版本悦施,做相應(yīng)備份會比較麻煩。
Git是linux之父當年為了維護linux---linus之前也是手動維護合并把文件發(fā)給Linus
集中式和分布式
集中式:Svn
分布式:Git
Git命令使用
Git初次使用添加用戶名和郵箱
配置用戶名:git config --global user.name "你的用戶名"
配置郵箱 :git config --global user.email "你的郵箱"
刪除錯誤配置 :git config --global --unset "錯誤的key刪除掉"
查看配置 :git config --list
去任何一家公司現(xiàn)完成上面的步驟
初始化一個空的倉儲
初始化空倉儲:git init
這個命令會在當前目錄中新建一個隱藏的名為.git的文件夾,里面存儲的是項目的各個版本去团。
千萬不要更改.git目錄里文件抡诞。
查看當前目錄文件的狀態(tài)
-
命令 : git status
- 查看當前工作目錄的狀態(tài),是已經(jīng)放到暫存區(qū)土陪,還是提交到倉庫了昼汗。
-
或命令: git status -s
- 查看簡要的狀態(tài)信息
將文件添加到暫存區(qū)
-
命令: git add ./file.txt
- 將當前目錄中的file.txt添加到暫存區(qū)
-
或者: git add .
表示將當前目錄所有文件都添加的暫存區(qū).
這是批量添加.
可以對文件執(zhí)行多次add命令,都會把最新的修改添加到暫存鬼雀,但是顷窒,后頁面執(zhí)行add命令,會把前面執(zhí)行add命令添加到暫存區(qū)的文件覆蓋(相同的文件會覆蓋)
將文件添加到倉儲中
-
命令 : git commit -m "這次我添加了一個變量"
-m 表示需要指定一個字符串源哩,表示本次提交的代碼與上一次相比多了哪些功能鞋吉,或者是做了哪些修改。
每次提交時都需要寫上相應(yīng)的字符串以做出說明
或命令: git commit -m -c
-c 表示可以在提交時励烦,不提供說明谓着。
不推薦這么做,不利于后期代碼維護
提交時只是提交暫存區(qū)的代碼坛掠,沒有添加到暫存區(qū)的代碼不會提交
查看日志
命令:git log
或命令:git log --oneline
以圖形化查看:git log –graph
忽略文件
不要省略/ 除非有必要
需要新建一個名為: .gitignore 的文件
-
這個文件話.git同級目錄.
該文件用來告訴我們的git哪些文件不要被添加一倉儲中赊锚。
忽略某個目錄: /node_modules
忽略某個文件: /css/my.css
忽略某一類文件: /css/*.css
忽略目錄下所有文件: .
忽略所有名為node_modules的目錄: node_modules
‘#’號表示注釋
版本回退
-
命令:git reset --hard Head
回到最近一次提交的版本的文件狀態(tài)
git指向的是上一次提交
'git reset --hard Head^^ 表示回到最近往前第二次的提交'
Head后面的^表示回退到第幾次
-
命令: git reset --hard Head~1
表示回到最近一次提交的前一次提交.
Head~2,回退到最近一次提交的前2次提交.
-
命令: git reset --hard [版本號]
示例: git reset --hard 12dad211
回退到某個具體的版本治筒。
可以配合git reflog命令查看歷史操作來進行回退
這里進行版本回退,并不會對文件進行真實的刪除
通過git reflog 可以查看到每一次對版本的切換來提交舷蒲。
-
創(chuàng)建Git分支耸袜,并切換分支
- 正在做功能呢,才做了一半牲平,但是為了不丟失代碼要提交堤框,又不能影響別人工作。
-
查看有多少分支
- git branch
-
命令: git branch dev
- 創(chuàng)建了一個名為dev的分支
-
命令: git checkout dev
- 切換到dev分支
-
創(chuàng)建并切換到指定分支
- git checkout -b dev
合并Git分支
畫圖
-
命令: git merge dev
表示將當前分支與dev分支合并
在主分支下執(zhí)行合并命令.
-
命令: git branch -d dev
表示刪除dev分支,當合并分支后欠拾,如果不需要再使用dev分支胰锌,則可以直接刪除骗绕。
不要在dev分支執(zhí)行這個命令藐窄,在別的的分支執(zhí)行.
-
解決沖突
應(yīng)該是如何合并沖突。
沖突是不可避免的酬土。
當在新功能完成后合并前荆忍,修改并提交了主分支對應(yīng)的文件,合并時兩個分支中的文件有沖突撤缴。
手動修改文件刹枉,然后提交
Git原理以及常用步驟
Git內(nèi)部結(jié)構(gòu)
為了更好的學(xué)習(xí)Git,我們們必須了解Git管理我們文件的3種狀態(tài)屈呕,分別是已提交(committed)微宝、已修改(modified)和已暫存(staged)
,由此引入 Git 項目的三個工作區(qū)域的概念:Git 倉庫虎眨、工作目錄以及暫存區(qū)域蟋软。 Git倉庫目錄是Git用來保存項目的元數(shù)據(jù)和對象數(shù)據(jù)庫的地方。 這是Git 中最重要的部分嗽桩,從其它計算機克隆倉庫時岳守,拷貝的就是這里的數(shù)據(jù)。 工作目錄是對項目的某個版本獨立提取出來的內(nèi)容碌冶。 這些從Git倉庫的壓縮數(shù)據(jù)庫中提取出來的文件湿痢,放在磁盤上供你使用或修改。 暫存區(qū)域是一個文件扑庞,保存了下次將提交的文件列表信息譬重,一般在Git倉庫目錄中。有時候也被稱作“索引”(Index)罐氨,不過一般說法還是叫暫存區(qū)域害幅。-
基本的Git工作流程如下:
1、在工作目錄中修改文件岂昭。
2以现、暫存文件狠怨,將文件的快照放入暫存區(qū)域。
3邑遏、提交更新佣赖,找到暫存區(qū)域的文件,將快照永久性存儲到Git倉庫目錄记盒。
git本地基本操作步驟
-
1.新建一個項目文件夾憎蛤,進行文件夾中,打git bash執(zhí)行命令: git init
初始化一個git倉儲,其實就是一個隱藏的.git文件夾
不要輕易改變里面文件
-
2.開始新文件,寫我們的代碼纪吮,寫完一個功能俩檬,執(zhí)行命令:git add [文件路徑]
示例:git add ./READEME.md
表示要把相應(yīng)的文件添加到暫存區(qū),暫存區(qū)和倉儲其實都在.git目錄中
批量添加 git add . 或者 git add *
-
3.把添加到暫存區(qū)的文件提交到倉儲中.
命令: git commit -m "這時寫類似注釋的東西"
注意:在提交之前需要配置個人信息 git config --global user.name "xiaoming"
git config --global user.email "xiaoming@sina.cn"
4.所有需要備份或者提交的文件及目錄都必須在.git所在目錄。不要超出.git所在目錄
x: 在這幾步前后碾盟,都可以執(zhí)行命令:git status
- 撤銷操作
- 撤銷已修改狀態(tài) git checkout -- 文件路徑
撤銷addgit status 先看一下add 中的文件 git reset HEAD 如果后面什么都不跟的話 就是上一次add 里面的全部撤銷了 git reset HEAD XXX/XXX/XXX.html 就是對某個文件進行撤銷了
撤銷 commitgit reset HEAD
Git網(wǎng)上操作
-
gitHub棚辽、gitLab和國內(nèi)的git網(wǎng)站
這些托管網(wǎng)站就相當于 百度云盤、360云盤 只不過這里上傳的是源代碼而不是其他東西
gitHub大部分收費 官網(wǎng)地址
gitLab大部分免費 官網(wǎng)地址
-
git clone
命令:'git clone [倉儲地址]'
會把指定倉儲的整個下載來
如果不需要下載整個倉儲冰肴,只需要最新的一次提交,加上參數(shù)--depth
登錄
直接通過賬號密碼登錄屈藐,太麻煩了
-
通過SSH登錄,不用在輸入用戶名和密碼
1.在任意位置輸入 ssh-keygen -t rsa 創(chuàng)建rsa密鑰
2.將rsa密鑰給網(wǎng)站
3.選clone路徑的時候選擇ssh登錄
push(推送)
命令:git push [地址] master
或命令:git push origin master
pull(拉回)
命令:git pull [地址] master
或命令:git pull origin master
remote命令使用
git remote add “主機名稱” “遠程倉庫地址”添加遠程主機熙尉,即給遠程主機起個別名联逻,方便使用
git remote rm“主機名稱” 命令用于刪除遠程主機。
git remote 可以查看已添加的遠程主機
git remote show “主機名稱”可以查看遠程主機的信息