目錄
1、起步
1.1、關於版本控制
Q:什麼是“版本控制”?
A:版本控制是記錄文件內容變化,以便將來查閱特定版本修訂情況的系統,常用於源代碼的文件。
Q:我爲什麼要關心它呢?
A:項目做了一段時間,突然心血來潮,決定使用Git來進行版本控制,同時也是爲了學習Git的使用。
1.2、Git簡史
引用鏈接:https://www.git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-Git-%E7%AE%80%E5%8F%B2
1.3、什麼是Git?
特點:
(1)直接記錄快照,而非差異比較
(2)近乎所有操作都是本地執行
(3)保證完整性
(4)一般只添加數據
三種狀態:
已提交(committed):已修改表示修改了文件,但還沒保存到數據庫中。
已修改(modified):已暫存表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。
已暫存(staged):已提交表示數據已經安全地保存在本地數據庫中。
工作流程:
(1)在工作區中修改文件。
(2)將你想要下次提交的更改選擇性地暫存,這樣只會將更改的部分添加到暫存區。
(3)提交更新,找到暫存區的文件,將快照永久性存儲到 Git 目錄。
1.4、命令行
可選:
--原生的命令行模式
--GUI 模式
由於只有在命令行模式下才能執行 Git 的 所有命令,因此從命令行開始學習~
1.5、安裝Git
Linux:
sudo dnf install git-all
或者
sudo apt install git-all
Windows:
下載Git-2.26.0-rc0-64-bit.exe,安裝。
1.6、初次運行Git前的配置
安裝完 Git 之後的第一件事:設置用戶名和郵件地址
git config --global user.name "John Doe"
git config --global user.email [email protected]
安裝完 Git 之後的第二件事:檢查配置信息
C:\Users\ASUS>git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
core.editor="C:\\Program Files\\Notepad++\\notepad++.exe" -multiInst -notabbar -nosession -noPlugin
credential.helper=manager
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
user.name=<E5><91><86><E7><BA><B8>
[email protected]
1.7、獲取幫助
找到Git命令綜合手冊的三種等價方法:
git help <verb>
git <verb> --help
man git-<verb>
例如,要想獲得 git config
命令的手冊,執行:
git help config
此外,如果你不需要全面的手冊,只需要可用選項的快速參考:
git add -h
2、Git基礎
2.1獲取 Git 倉庫
通常有兩種獲取 Git 項目倉庫的方式:
--在已存在目錄中初始化倉庫
cd /c/user/my_project
git init
git add *.py
git commit -m 'initial project version'
--克隆現有的倉庫
git clone <url>
2.2記錄每次更新到倉庫
--檢查當前文件狀態
git status
--跟蹤新文件
git add <files>
--暫存已修改的文件
git add <files>
//運行了 git add 之後又作了修訂的文件,需要重新運行 git add 把最新版本重新暫存起來
--忽略文件
例如創建一個名爲 .gitignore
的文件,列出要忽略的文件的模式
$ cat .gitignore
# 忽略所有的 .a 文件
*.a
# 但跟蹤所有的 lib.a,即便你在前面忽略了 .a 文件
!lib.a
# 只忽略當前目錄下的 TODO 文件,而不忽略 subdir/TODO
/TODO
# 忽略任何目錄下名爲 build 的文件夾
build/
# 忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 忽略 doc/ 目錄及其所有子目錄下的 .pdf 文件
doc/**/*.pdf
針對不同語言的gitignore文件列表:https://github.com/github/gitignore
--查看已暫存和未暫存的修改
git diff
此命令比較的是工作目錄中當前文件和暫存區域快照之間的差異。 也就是修改之後還沒有暫存起來的變化內容。
若要查看已暫存的將要添加到下次提交裏的內容,可以用 git diff --staged
命令。
--提交更新
git commit -m "提交說明"
--跳過使用暫存區域
git commit -a -m '提交說明'
--移除文件
//從暫存區域移除
git rm <file>
//刪除之前修改過或已經放到暫存區的文件
git rm -f <file>
//從暫存區域移除,但不刪除該文件
git rm --cached <file>
--移動文件
Git 並不顯式跟蹤文件移動操作,如果在 Git 中重命名了某個文件,倉庫中存儲的元數據並不會體現出這是一次改名操作。
git mv file_from file_to
2.3查看提交歷史