『现学现忘』Git基础 — 12、Git用户签名的其他操作
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提示,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。