1、修改使用者簽名
其實很簡單,就是重新執行git config
命令,換個使用者名稱和郵箱地址就可以了,新配置的內容會覆蓋之前配置的內容,達到了使用者簽名的修改。
以系統使用者為例:
# 檢視系統級別的使用者配置
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --list --system
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=F:/DevInstall/Git/GitforWindows/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
credential.helper=manager
user.name=tang_s # 這裡是tang_s
user.email=tang_s@126.com
# 修改系統使用者配置
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --system user.name 'zhu_bj'
# 檢視系統級別的使用者配置
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --list --system
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=F:/DevInstall/Git/GitforWindows/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
credential.helper=manager
user.name=zhu_bj # 這裡是zhu_bj
user.email=tang_s@126.com
提示:
- 系統級別的配置對應的是所有作業系統的使用者,全域性配置對應的是單個系統使用者對所有Git倉庫的配置,本地配置是對單個Git倉庫的配置。
- 所以綜上所述,在一臺計算機中,系統使用者只能有一個,全域性使用者是每一個使用者可以設定一個,本地使用者可以設定多個(一個本地版本庫對應一個)。
2、取消使用者簽名
語法:
git config --配置檔案範圍 --unset user.name
git config --配置檔案範圍 --unset user.email
示例:取消系統使用者的使用者名稱和郵箱設定:
# 取消系統使用者的使用者名稱和郵箱設定
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --system --unset user.name
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --system --unset user.email
# 檢視系統級別的使用者配置,可以看到沒有系統使用者的配置了。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --list --system
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=F:/DevInstall/Git/GitforWindows/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
credential.helper=manager
提示:全域性使用者同理,本地使用者需要到倉庫中執行命令,也是同理的。
3、使用者簽名的優先順序
之前我們講過執行git config
命令有三個作用域,分別是local、global、system
。
接下來,要探討的是,這三個配置作用域的優先順序。
(1)先檢視本機Git使用者簽名配置
# 檢視系統使用者簽名
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --list --system
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=F:/DevInstall/Git/GitforWindows/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
credential.helper=manager
user.name=tang_s
user.email=tang_s@126.com
# 檢視全域性使用者簽名
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --list --global
user.name=sun_wk
user.email=sun_wk@126.com
# 檢視本地使用者簽名
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git config --list --local
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
user.name=sha_hs
user.email=sha_hs@126.com
可以看到:
- 系統使用者簽名:
tang_s
- 全域性使用者簽名:
sun_wk
- 本地使用者簽名:
sha_hs
(2)建立一個檔案,提交到本地版本庫中。
1)在倉庫中建立一個文字。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ touch test.java
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ ll
total 0
-rw-r--r-- 1 L 197121 0 4月 3 10:54 test.java
2)提交這個文字到本地Git倉庫中。
# 1.檢視工作目錄和暫存區中檔案的狀態,
# 發現工作區中有一個test.java未被git管理
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.java
nothing added to commit but untracked files present (use "git add" to track)
# 2.把test.java新增到暫存區,被git納入管理
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git add test.java
# 3.再次檢視工作目錄和暫存區中檔案的狀態,
# 可以看到test.java檔案被git管理
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.java
# 4.把test.java提交到本地版本庫中
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git commit -m 'add test.java'
[master (root-commit) e85b3b2] add test.java
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test.java
說明上邊的一些列操作:這裡簡單解釋一下,之後會詳細說明。
使用Git的好處之一就是,如果出錯了,它的提示資訊是非常詳細的,認真的耐心的看一看,就能夠解決。
- 執行
$ git status
命令:用於顯示工作目錄和暫存區中檔案的狀態。
檔案是紅色的,意思是test.java
檔案還沒有被Git管控,這個時候直接使用git commit
命令是不能生效的。 - 將檔案加入Git的暫存區。
這時就要對新加入的檔案執行git add + 檔名
,讓Git對該檔案進行管控,在看一下Git的狀態。
綠色表示該檔案已經被Git管理了,該檔案已經在Git的暫存區當中了(stage
)。 - 此時便可以對test.java檔案生成一個正式的
commit
了。
執行$ git commit -m 'add Test_text'
-m :就是說你這此變更的理由或者原因是什麼。
提示master
分支根部的commit
已經建立出來了。
(3)檢視Git日誌。
執行git log
命令,檢視Git日誌。
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git log
commit e85b3b21a4b296acacf34bf9caeeaa75544a2f2b (HEAD -> master)
Author: sha_hs <sha_hs@126.com>
Date: Sat Apr 3 10:55:55 2021 +0800
add test.java
我們可以看到,在system
、global
、local
這三個使用者簽名都存在的情況下,是通過本地使用者進行的提交,所以說明本地使用者sha_hs
的優先順序最高。
提示:
- 黃顏色的一串數字是本次
commit
的id
號。Author
表示完成這一次提交的作者。
(4)配置檔案級別的優先順序總結。
- 就近原則:
專案(本地)級別優先於使用者(全域性)級別,使用者級別優先於系統級別。
三者都有時採用專案級別的簽名。 - 如果只有使用者級別的簽名,就以使用者級別的簽名為準。
- 三者都沒有簽名,不允許,無法提交變更到本地版本庫。
4、總結本文用到的Git命令
序號 | Git命令 | 說明 |
---|---|---|
1 | $ git status |
檢視當前工作區和暫存區檔案的狀態 |
2 | $ git add |
可以將跟蹤到的更新放到暫存區(更新包括新增、修改、刪除等操作) |
3 | $ git commit -m 'add Test_text' |
提交更新 |
4 | $ git log |
檢視提交歷史 |
注意:
執行
git status
命令後,出現“Changed but not updated”
t提示,說明已跟蹤檔案的內容發生了變化,但還沒有放到暫存區。