我看文章中说 git 有三级账户体系,system>global>local ,为什么要这样?
在我脑海中 git add--》 git commit 都是一套账户体系下完成。目的不就是单纯管理一套代码么?如果管理多个项目代码,也可以设立一套机制来在一个用户名下管理啊。就好比百度云盘备份,可以在一个账号下通过划分文件夹来管理不同类型的资料备份。
如果要区分私人和公司的代码,那也可以通过 git 登陆不同的账户来实现,就像你有私人 qq 账号,还有一个公司 qq 账号。
在什么工作场景下非要要通过账号层级的区分不可呢?
用过多级账号的老师可否指点一下?
1
zbinlin 2023-05-22 16:24:16 +08:00
你指的是 config 吗?
|
2
MetroWind 2023-05-22 16:44:57 +08:00
把文章关了,看官方文档去。
|
3
huzhikuizainali OP @zbinlin 是的。
我刚刚看了其他资料。内容大概如下 system ,管理这台计算机上的代码 global ,管理本机当前登录账号下的代码 local ,管理指定文件夹中的代码。 local 比较好理解。你在 A 文件夹下通过 git bash ,git 初始化以后。git 就监控 A 文件夹下的所有文件变动。.git 文件夹也存放在 A 文件夹下。 那 global 账号建立以后 git 难道监控本机所有文件夹下的文件变动?这不现实吧?所以 global 账号是如何使用的呢? |
4
zbinlin 2023-05-22 18:31:27 +08:00
@huzhikuizainali 不要用账号去理解它,这里面没有账号的概念,只是不同的作用域的配置项而已。
|
5
wdssmq 2023-05-23 13:38:10 +08:00
多层级 config 体系 √
user.name 和 user.email 也只是 config 中的两个 option ,和你的 github 账号并没有直接关系,除非上 GPG 签名; 之前就有过有人把这个写成 Linus 然后搞事; 为什么 Github 允许冒充别人的身份 Commit ? - 知乎 https://www.zhihu.com/question/280774106 config 、option 、setting 这三者在程序世界里是什么区别? - 知乎 https://www.zhihu.com/question/39827177 可以执行下边命令初始化一个仓库: git init git config user.name "xxxx" git config user.email "[email protected]" # 后两句可以在每个项目文件夹内都执行设置,但也挺麻烦的……多层级 config 体系 √ user.name 和 user.email 也只是 config 中的两个 option ,和你的 github 账号并没有直接关系,除非上 GPG 签名; 之前就有过有人把这个写成 Linus 然后搞事; 为什么 Github 允许冒充别人的身份 Commit ? - 知乎 https://www.zhihu.com/question/280774106 config 、option 、setting 这三者在程序世界里是什么区别? - 知乎 https://www.zhihu.com/question/39827177 可以执行下边命令初始化一个仓库: git init git config user.name "xxxx" git config user.email "[email protected]" # 后两句如果在每个新项目内都执行一次的话也挺麻烦的 git config --global user.name "xxxx" git config --global user.email "[email protected]" # ↑这样可以只设置一次,作用域下的项目会直接继承,除非你在项目内重新设置了 git config --global user.name "xxxx" git config --global user.email "[email protected]" # ↑ 这样可以只设置一次,作用域下的项目会默认沿用, |
7
huzhikuizainali OP @wdssmq
谢谢回复 user.email 也只是 config 中的两个 option ,和你的 github 账号并没有直接关系,除非上 GPG 签名————前半句,理解。但 GPG 签名是什么意思? 设置 global 账户后。这样可以只设置一次,作用域下的项目会默认沿用。 这样就不需要像 local 账户那样逐个项目,逐个文件夹去 git add 。去 git commit 了对吧—————————但是 global 账户会监控电脑上所有文件夹的变动么?如果不是,如何让 git 只监控我想让它监控的代码文件夹呢? |
8
wdssmq 2023-05-23 15:13:31 +08:00
global 和 local 是 config 概念,不是「账户」。。。。。。。。
以 git 自身来说,它是没有「监控」这个概念的; 你需要在一个文件夹路径内「主动」执行 git XX 命令,git 程序会在当前目录或者上层目录寻找 .git 文件夹,以含有 .git 文件夹的目录为根目录,然后执行相应操作; 如果没能找到 .git 文件夹,就会报错: > fatal: not a git repository (or any of the parent directories): .git |
9
huzhikuizainali OP @wdssmq 谢谢回复。
关于我说的账户:请看如下命令 git config --local user.name 'zhangsan' git config 一 local user. email '[email protected]' 当你以这个帐号,去进行 git add git commit git status 这些命令的作用范围仅限于你最初用 git init 生成“.git 文件夹” 所在的文件夹 。除此以外的文件夹,即便你修改了代码后,用 git status 去查询,看看不到任何 modifeid 的记录。因为 git 不会“监控”其它文件夹的变化-------------以上理解没错的话。 那么 当你 git config --global user.name 'lisi' git config 一 global user. email '[email protected]' 后。据说这样可以不用“逐个项目进行提交” 可以 “一次提交所有的项目”。 我对此理解不深。请问 ‘lisi’ 的 git 命令作用范围是如何限定的?用起来了 zhangsan 用起来有何不同? |
10
wdssmq 2023-05-23 16:03:25 +08:00
请不要在每一个回复中都包括外链,这看起来像是在 spamming
- - config 可以看作是美国的法律,golobal 和 local 可以看作是国家法律和州法律,这种感觉? 具体的 git add 操作可以看作是开车,启动,加速,刹车,熄火,停车还是要你自己操作的,具体的交通法则是由 config 决定的; |