V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
huzhikuizainali
V2EX  ›  git

Git 为什么要创建多层级账户体系?

  •  
  •   huzhikuizainali · 2023-05-22 15:53:48 +08:00 · 864 次点击
    这是一个创建于 575 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我看文章中说 git 有三级账户体系,system>global>local ,为什么要这样?

    在我脑海中 git add--》 git commit 都是一套账户体系下完成。目的不就是单纯管理一套代码么?如果管理多个项目代码,也可以设立一套机制来在一个用户名下管理啊。就好比百度云盘备份,可以在一个账号下通过划分文件夹来管理不同类型的资料备份。

    如果要区分私人和公司的代码,那也可以通过 git 登陆不同的账户来实现,就像你有私人 qq 账号,还有一个公司 qq 账号。

    在什么工作场景下非要要通过账号层级的区分不可呢?

    用过多级账号的老师可否指点一下?

    zbinlin
        1
    zbinlin  
       2023-05-22 16:24:16 +08:00
    你指的是 config 吗?
    MetroWind
        2
    MetroWind  
       2023-05-22 16:44:57 +08:00
    把文章关了,看官方文档去。
    huzhikuizainali
        3
    huzhikuizainali  
    OP
       2023-05-22 17:17:32 +08:00
    @zbinlin 是的。
    我刚刚看了其他资料。内容大概如下

    system ,管理这台计算机上的代码

    global ,管理本机当前登录账号下的代码

    local ,管理指定文件夹中的代码。

    local 比较好理解。你在 A 文件夹下通过 git bash ,git 初始化以后。git 就监控 A 文件夹下的所有文件变动。.git 文件夹也存放在 A 文件夹下。

    那 global 账号建立以后 git 难道监控本机所有文件夹下的文件变动?这不现实吧?所以 global 账号是如何使用的呢?
    zbinlin
        4
    zbinlin  
       2023-05-22 18:31:27 +08:00
    @huzhikuizainali 不要用账号去理解它,这里面没有账号的概念,只是不同的作用域的配置项而已。
    wdssmq
        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]"

    # ↑ 这样可以只设置一次,作用域下的项目会默认沿用,
    wdssmq
        6
    wdssmq  
       2023-05-23 13:40:35 +08:00
    @wdssmq 想全选覆盖一次的,操作失误了 - -
    huzhikuizainali
        7
    huzhikuizainali  
    OP
       2023-05-23 14:28:34 +08:00
    @wdssmq
    谢谢回复

    user.email 也只是 config 中的两个 option ,和你的 github 账号并没有直接关系,除非上 GPG 签名————前半句,理解。但 GPG 签名是什么意思?

    设置 global 账户后。这样可以只设置一次,作用域下的项目会默认沿用。 这样就不需要像 local 账户那样逐个项目,逐个文件夹去 git add 。去 git commit 了对吧—————————但是 global 账户会监控电脑上所有文件夹的变动么?如果不是,如何让 git 只监控我想让它监控的代码文件夹呢?
    wdssmq
        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
    huzhikuizainali
        9
    huzhikuizainali  
    OP
       2023-05-23 15:32:11 +08:00
    @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 用起来有何不同?
    wdssmq
        10
    wdssmq  
       2023-05-23 16:03:25 +08:00
    请不要在每一个回复中都包括外链,这看起来像是在 spamming

    - -

    config 可以看作是美国的法律,golobal 和 local 可以看作是国家法律和州法律,这种感觉?

    具体的 git add 操作可以看作是开车,启动,加速,刹车,熄火,停车还是要你自己操作的,具体的交通法则是由 config 决定的;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:12 · PVG 12:12 · LAX 20:12 · JFK 23:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.