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提示,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。