《Git葵花寶典》:Git Book
1. 實驗環境
主機信息 | 主機功能 |
---|---|
git(192.168.1.50) | 搭建git倉庫 |
物理機(192.168.1.250) | 提供資源 |
2. Git Status狀態顯示分類
Git有三種狀態:已提交(committed)、已修改(modified)和已暫存(staged)
- 已修改表示修改了文件,但還沒保存到數據庫
- 已暫存表示對一個已經修改的文件當前版本做了標記,使之包含在下次提交的快照中
- 已提交表示數據已經安全的保存在本地數據庫中
狀態標記 - 新添加的未跟蹤文件前面有 ?? 標記
- 新添加到暫存區中的文件前面由 A 標記
- 修改過的文件前面有 M 標記
- 出現在 右邊的M 表示該文件被修改了但還沒有放入暫存區
- 出現在 靠左邊的M 表示該文件被修改了並放入了暫存區
- MM 表示工作區被修改並提交到暫存區後又在工作區中被修改了,所以在暫存區和工作區都有該文件被修改了的記錄
3. Git部署過程
(1)安裝git命令
(2)創建本地倉庫,並初始化
mkdir demo # 這裏創建的版本庫的名字爲demo
cd demo/ #
ls -a
git init #進行初始化,需要在版本庫目錄中(這裏的版本庫目錄爲demo)
l.
可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來管理版本庫的,一般不要手動修改這個.git目錄裏面的文件
(3)添加用戶信息
初始化完後,接下來就要設置用戶名和郵件地址,每次Git提交都會附帶上這些信息 倉庫所有者的標籤
git config --global user.email "[email protected]"
git config --global user.name "du"
cat ~/.gitconfig
(4)創建文件,查看文件狀態
echo This text is test >> test.txt
git status -s
新添加的未跟蹤的文件前面有??標誌,表示沒有添加到暫存區
git add test.txt
git status -s
標誌A表示已經添加到暫存區了
echo linux >> test.txt
git status -s
內容修改但是還沒有放入暫存區,此時M在靠右邊
git add test.txt
git status -s
內容修改且放入暫存區,此時M在靠左邊
echo dsd >> test.txt
git status -s
工作區被修改並提交到暫存區後又在工作區中被修改了,所以在暫存區和工作區都有該文件被修改了的記錄
git add test.txt
git status -s
git commit -m "v1"
將修改後的內容放入到暫存區,此時M靠左邊
提交之後我們就會發現沒有文件狀態了
(5)忽略文件
在創建過程中總會自動生成一些我們不需要的文件,比如日誌文件、編譯過程中的臨時文件等。這種情況下,創建一個 .gitignore 的文件,列出要忽略的文件模式
[root@git demo]# git status -s
?? env/
[root@git demo]# touch .file1
[root@git demo]# git status -s
?? .file1
?? env/
[root@git demo]# ls
env test.txt
[root@git demo]# l.
. .. .file1 .git
[root@git demo]# vim .gitignore
[root@git demo]# cat .gitignore
.*
env
[root@git demo]# git status -s
[root@git demo]#
(6)版本回退
Git同系統也是一樣,每當文件修改到一定程度的時候,就可以“保存一個快照”,這個快照在Git中被稱爲commit。
一旦你把文件改亂了,或者誤刪了文件,還可以從最近的一個commit恢復,然後繼續工作,而不是將成果全部丟失
git log命令顯示從最近到最遠的提交日誌
git log --pretty=oneline查看簡略日誌信息
git reflog查看歷史記錄
git reset --hard HEAD^
上一個提交狀態就是HEAD,上上一個提交狀態就是HEAD^
git reset --hard … 回退到指定狀態
(7)刪除恢復
git checkout – file
以丟棄工作區的修改,就是讓這個文件回到最近一次git commit或git add時的狀態
刪除後沒有提交,直接:git checkout – file即可
刪除且提交後: git reset --hard 指定狀態