文章目錄
本地庫初始化
git init
創建了一個.git隱藏文件,該文件存放的是與本地庫有關的文件
設置簽名
以用戶名和郵箱爲標識,用於區分不同的人(用戶名可以隨意,郵箱不必是真實的,這些與登錄代碼託管中心的賬號密碼無關)
倉庫級別/項目級別
在當前本地庫範圍有效,即在testGit文件夾有效(範圍較小)
git config user.name [名字]
git config user.email [郵箱]
git config user.name lzw
git config user.email [email protected]
在.git文件夾中,以記事本打開config文件,可以看到配置信息保存進來了
系統用戶級別
在登錄操作系統的用戶範圍有效(範圍較大)
git config --global user.name [名字]
git config --global user.email [郵箱]
git config --global user.name lzwPro
git config --global user.email [email protected]
在C:\Users\lzw(用戶名)目錄下,.gitconfig文件中保存着配置信息
基本操作
追蹤文件
對未追蹤的文件進行追蹤,將工作區新建或修改的文件添加至暫存區
git add [文件名]
git add test.txt
提交文件
將暫存區文件提交至本地庫
在編輯器中輸入提交信息
git commit [文件名]
git commit test.txt
在命令行直接輸入提交信息
git commit -m “[提交日誌] [文件名]”
git commit -m "my first commit test.txt"
- 提交信息:my first commit!
- 文件內容變化情況
對於修改了內容的文件,可以不add,直接commit,但是不可撤銷
移除文件
將test.txt文件從暫存區刪除
git rm --cached [文件名]
git rm --cached test.txt
獲取狀態
查看工作區、暫存器的狀態
git status
- 表示在master分支
- 沒有已經提交過的,本地庫無文件
- 沒有可提交的,暫存區無文件
我們在這裏新建一個txt文件,再次獲取狀態
- 表示在master分支
- 沒有已經提交過的,本地庫無文件
- 存在未追蹤的文件,test.txt未放至暫存區。
我們追蹤test文件之後,再次獲取狀態
- 表示在master分支
- 沒有已經提交過的,本地庫無文件
- test.txt是將要被提交至本地庫的文件
將暫存區文件提交之後,再次獲取狀態
- 表示在master分支
- 暫存區沒有要提交的,工作區文件無變化
將test文件內容修改之後,再次獲取狀態
- 表示在master分支
- test文件被修改,但未添加至暫存區
將修改之後的文件進行追蹤,再次獲取狀態
- 表示在master分支
- 被修改的test文件可以被提交至本地庫
刪除文件之後,再次獲取狀態
- 表示在master分支
- test文件被刪除,但未添加至暫存區
- 表示在master分支
- 被刪除的test文件可以被提交至本地庫
查看歷史記錄
形式1:
git log
詳細的顯示提交日誌(只顯示當前版本及之前的版本)
形式2:
git log --pretty=oneline
更美觀的顯示在一行(只顯示當前版本及之前的版本)
形式3:
git log --oneline
哈希值更短(只顯示當前版本及之前的版本)
形式4:
git reflog
顯示跳轉步數(HEAD@{n})(顯示所有版本)
版本的移動
本質上是移動HEAD指針
基於索引值(前進或後退)
git reset --hard [局部哈希值]
根據局部索引值移動版本,下方命令移動至60df1f3版本
git reset --hard 60df1f3
我們查看文件test.txt,確實內容變成了對應的版本
使用^符號(後退)
git reset --hard HEAD[n個^]
版本後退n步
git reset --hard HEAD^
查看test.txt文件
使用~符號(後退)
git reset --hard HEAD~[n]
後退指定的n步
git reset --hard HEAD~1
現在test文件的內容已經成爲一開始提交的內容
對reset查看本地幫助文檔
git help reset
- --hard:在本地庫移動HEAD指針,重置暫存區,重置工作區
- --mixed:在本地庫移動HEAD指針,重置暫存區
- --soft:在本地庫移動HEAD指針
刪除文件與恢復
恢復的前提是:刪除之前的狀態已經提交至本地庫
我們手動將文件刪除
提交至本地庫之後的恢復
git add test.txt
git commit test.txt
查看歷史記錄
我們現在退至未刪除之前的版本即可
可以看到,文件已經恢復
提交至本地庫之前的恢復
未使用git commit命令的恢復
git reset --hard HEAD
比較文件差異
我們將文件內容修改(添加了最後一行)
將工作區內容與暫存器區內容進行比較
git diff [文件名]
git diff test.txt
可以看到增加了的行以及刪除了的行(這裏沒有刪除的行),增加的是綠色,刪除的是紅色
將工作區內容與本地庫歷史記錄內容進行比較 (git diff 後加歷史版本及文件名)
git diff [歷史記錄] [文件名]
git diff HEAD^^ test.txt
可以看到,和之前的版本相比多了3行
當git diff 後不加文件名時,比較的是工作區的所有文件
分支管理
分支:在版本控制過程中,使用多條線,同時推進多個任務。
好處1:同時並行推進多個功能開發,提高開發效率
好處2:如果某一分支開發失敗,不影響其它分支
創建分支
git branch [分支名]
將當前分支的內容複製到新的分支上
git branch hot_fix
查看分支
git branch -v
查看所有的分支
綠色的是當前分支
切換分支
git checkout [分支名]
git checkout hot_fix
可以看到hot_fix爲綠色的分支,即當前的分支爲hot_fix
合併分支
git checkout [分支名1]
git merge [分支名2]
先切換至要被合併的分支,再執行合併,將分支2的內容合併到分支1上。
git checkout master
git merge hot_fix
解決衝突
當兩個分支中相同的行被修改後,那麼兩個分支之間的合併將會發生衝突
例如:
在master分支上我們的內容是:
在hot_fix分支上我們的內容是:
那麼合併時會發生衝突
此時打開文件,可以看到發生衝突的內容(=======上方爲當前分支內容,下方爲要合併的分支的內容)
我們對內容進行修改,刪除特殊符號,然後改成我們想要的內容
最後提交內容
git add [文件名]
git commit -m “[日誌]”
這裏不加文件名
linux命令
這是一些常用的linux命令
- ll:顯示所有目錄(不含隱藏文件)
- ls -la:顯示所有目錄(含隱藏文件)
- cd [目錄]:跳轉路徑
- mkdir [目錄]:新建文件夾
- pwd:查看當前路徑
- vim [文件名] :新建文件
- :set nu:顯示行號
- :wq:退出編輯
- cat [文件]:查看文件內容
- 空格:向下翻頁
- a:向上翻頁
- q:退出
- tail -n [行數] [文件名]:顯示文件內容的指定行數
- rm [文件名]:刪除文件