git使用(1)
git使用
系統:Windows
安裝:建議參考一篇更詳細的教程:Git 詳細安裝教程(詳解 Git 安裝過程的每一個步驟)_mukes的部落格-CSDN部落格_git安裝
1.初次執行 git 前的配置
講解部分(可以跳過,直接進入操作部分):
在配置之前,需要先了解一下三個級別的配置檔案:
-
/etc/gitconfig
,所有使用者及倉庫的通用配置,可以在你自己 git 的安裝路徑裡面找到。congif
代表配置。 -
~/.gitconfig
或者~/.config/git/config
,一般在C:\Users\user_name 裡面可以找到。user_name 代表 Windows 系統下你自己的使用者名稱。~
-
當前倉庫下的
config
,配置只針對該倉庫。
我們選擇在 Git Bash 裡面操作,跟 windows 的 cmd 一樣。配置/編輯的語法示例
git config --global user.name "ZhangSan"
-
--global
用來配置~/.gitconfig
或者~/.config/git/config
,可以替換成--system
配置/etc/gitconfig
,--local
配置當前倉庫下的config
。一定要清楚你想讓配置生效的範圍; -
user.name
- 每一個級別會覆蓋上一級別的配置,所以
.git/config
的配置變數會覆蓋/etc/gitconfig
中的配置變數。 - 如果使用了
--global
選項,那麼該命令只需要執行一次,因為之後無論你在該系統上做任何事情, Git 都會使用那些資訊
如果我們要檢視配置:
$ git config --list # 檢視所有配置
$ git config user.name # 檢視指定的配置
$ git config --show--origin # 可以查詢 Git 中該變數的 原始 值,它會告訴你哪一個配置檔案最後設定了該值
你可能會看到重複的變數名,因為 Git 會從不同的檔案中讀取同一個配置(例如:/etc/gitconfig
與 ~/.gitconfig
)。 這種情況下,Git 會使用它找到的每一個變數的最後一個配置。
操作部分:
配置自己的使用者名稱和郵箱在~/.gitconfig
下,這是你安裝後第一個要做的事。示例如下
$ git config --gloabl user.name "ZhangSan"
$ git config --global user.email [email protected]
因為我也是第一次配置,不知道會有什麼影響,這裡我選擇了輸入 GitHub 的賬戶和郵箱。在官方部分,可能還會指出讓你配置編輯器,這裡你可以檢視一下,是不是已經配置好了(因為在安裝部分已經選過了)
$ git config core.editor
2.如何獲取幫助
獲得詳細的幫助,
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
獲得簡單的幫助
$ git <verb> -h
3.將尚未進行版本控制的本地目錄轉換為 Git 倉庫
先進入你的專案目錄,注意和 cmd 不同,用 /
而不是 \
,並且選擇進入哪個盤時直接 /c/
。這裡是以 c 盤為例的,your_path
代表你的專案在對應盤下的路徑。
$ cd /c/your_path
之後執行如下。該命令將建立一個名為 .git
的子目錄,這個子目錄含有你初始化的 Git 倉庫中所有的必須檔案,這些檔案是 Git 倉庫的骨幹。
$ git init
新增指定檔案進行跟蹤(指將檔案納入版本控制)。比如,我們需要跟蹤 helloworld.py 檔案,就如下
$ git add <file/path>
$ git add helloworld.py # 示例
在新增時,可能會出現一個警告:
warning: LF will be replaced by CRLF in timely_test.ipynb.
The file will have its original line endings in your working directory
警告:在 timely_test.ipynb 的 LR 將被替換成 CRLR。你的工作目錄裡的檔案將還是它原始的換行。
這裡只是警告,建議忽略就好。LF 和 CRLF 分時是 Linux/unix 和Windows系統上的換行符,為了方便跨平臺的工作,會自動轉換。會有一個引數 core.autocrlf
來設定,預設是 True。
之後執行 git commit
,我這裡是添加了三個檔案
$ git commit -m 'initial project version'
4.記錄每次更新到倉庫
4.1.檢查檔案當前狀態
在工作目錄下的檔案有兩種狀態已跟蹤和未跟蹤(Untracked)。對於已跟蹤的檔案,可能有三種狀態:未修改(Unmodified)、已修改(Modified)和已放入快取區(Staged:changes to be commit)。這裡特意註明了單詞,是因為我們在檢查檔案狀態時會看到相應的列表。檢查方法如下:
$ git status
上面是查詢的結果,希望你可以去嘗試讀懂。第一句 on branch master
這個是說當前的分支是master,在安裝時應該有印象,是說因為什麼黑人事件改了。第二句話時是在說我未跟蹤的檔案 untracked files
有哪些並且給出來了。括號裡告訴我怎麼去跟蹤。又說 nothing to commit
,因為我現在還沒對檔案做任何修改,沒有暫存的檔案。最後又說了我還有未跟蹤的檔案。在官方文件還有一句是關於遠端部署的,這裡沒有伺服器只是在本地,所以沒有。
如果你查詢出來的結果跟我不一樣,希望你也試著去讀懂,這個很重要!在我把所有檔案跟蹤後,查詢的結果如下:(tree 這裡和 branch 對應)
4.2.跟蹤新檔案
在配置部分已經嘗試過了,這裡另外說明一下,如果新增目錄來跟蹤,則會遞迴的跟蹤該目錄下的所有檔案。
4.3.暫存已修改檔案
我去修改了我的 readme.md 檔案,再去檢視狀態有 changes not staged for commit
,即已跟蹤的檔案發生了變化,但是沒有放到暫存區。
用 git add
將它放到暫存區,之後再檢視狀態:
注意: git add
這時的功能可以理解為快照,它只記錄你在執行 git add
時的檔案內容,如果你希望暫存新的修改,就要再執行一次 git add
。
4.4.狀態簡覽
$ git status -s # 或者
$ git status --short
這裡會用一些狀態標記:A
(add)表示新新增到暫存區,M
(modefied)表示修改過,?
表示未跟蹤的檔案。狀態列由兩個狀態標記的位置,前面的表示暫存區,後面的表示工作區。
$ git status -s
M README # 已修改尚未暫存
MM Rakefile # 已修改,暫存後又做了修改
A lib/git.rb # 新新增到暫存區
M lib/simplegit.rb # 已修改且已暫存
?? LICENSE.txt # 新新增未跟蹤
4.5.忽略檔案
可能有一些臨時的檔案,不用納入 git,也不想看到出現在未跟蹤列表。對於這種情況,可以建立一個名為 .gitignore
的檔案,列出要忽略檔案的格式。類似正則匹配,這裡先不詳細列出。你可以在這裡看到更加詳細的說明:https://github.com/github/gitignore
4.6.檢視修改的內容
git diff
檢視尚未暫存的檔案更新的部分:此時比較的工作目錄的當前檔案與暫存區快照之間的差異。
$ git diff
git diff --staged
檢視已暫存將要新增到下次提交的內容:此時比較已暫存檔案與最後一次提交的檔案的差異。
$ git diff --cached # 或者
$ git diff --staged
這裡嘗試了已暫存和上次提交的差異,@@ -4,3 +4,5@@
後面的白色內容是原有的內容(上次提交的內容),下面綠色部分是更新的內容(已暫存的內容),我只是加了 “update!!!” 這段話。
圖形化工具也可以比較檔案差異。
4.6.提交更新
好了,到這裡終於要提交更新 commit 了。用下面命令會把已經暫存的檔案提交,注意,只有已暫存的,如果你在工作區修改了,但是沒有暫時,不會對這些修改生效。
$ git commit
提交後會執行之前設定的編輯器,顯示預設的提交資訊,如圖下圖註釋部分。註釋上面有一個空行,需要你自己對此次提交的內容進行描述,然後儲存關閉即可。
4.7.跳過暫存區
會提交所有修改過的檔案,這樣就可以跳過 git add 步驟,但不可控,可能會提交不需要的檔案。
$ git commit -a
用一張圖來總結一下目前為止的一些命令吧:
4.8.移除檔案
從跟蹤檔案的清單裡移除,然後提交。如果你只是從工作區自己刪除檔案,但是在快照裡還是有這個檔案的。此時執行 git status
會出現 changes not staged for commit
。
git rm <file>
除了會不再跟蹤外,還會從工作目錄中刪除指定的檔案
git rm -f <file>
強制(force)刪除,可以刪除已經放到暫存區的檔案,這樣的資料不能被 git 恢復。
git rm --cached <file>
只是不再跟蹤,從 git 倉庫中刪除,但是檔案仍然被保留。
$ git rm helloworld.py # 不再跟蹤且刪除
$ git rm --cached helloworld.py # 不再跟蹤
$ git rm -f helloworld.py # 強制刪除,包括暫存區,不可恢復
4.8.重新命名/移動檔案
如果你要重新命名檔案可以這樣做:
$ git mv pre_name new_name # 相當於執行了下面三條命令
$ mv pre_name new_name
$ git rm pre_name
$ git add new_name
如果說你用其他方式重新命名的檔案,在提交前 git rm
刪除舊檔名,再 git add
新增新檔名。