鱼C论坛

 找回密码
 立即注册
查看: 1074|回复: 8

[已解决]GIT分级帐号是区别是什么,如何使用?

[复制链接]
头像被屏蔽
发表于 2023-5-23 16:04:24 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-23 16:31:33 | 显示全部楼层
git分级账号指的是针对不同层级的操作的git账号配置,包括system、global和local。其中,

1. system账号:用于管理整个计算机上的代码,以及全局的git配置,例如git安装目录、默认编辑器、代理等等。这个账号需要具有管理员权限才能配置。

2. global账号:用于当前用户登录账号下的所有项目,所有项目都可以访问到这个账号进行的配置。例如该账号的用户名、用户邮箱等。这个账号会被写入~/.gitconfig文件中,意味着所有项目默认都会使用这个配置。

3. local账号:用于指定文件夹中的代码。当你在项目文件夹下通过git bash初始化后,git就会在该文件夹下监控所有文件的变化,所有git操作命令作用的范围仅限于该文件夹。这个账号会被写入项目根目录下的.git/config文件中。

因此,当你使用global账号时,其作用范围为当前用户登录账号下的所有项目。例如你可以配置全局的用户名和邮箱来避免重复配置。相对于local账号,其配置更加方便和统一。但是需要注意的是,如果在某个特定的项目中需要使用其他的用户名或邮箱,需要使用```git config --local```命令来覆盖。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2023-5-23 17:14:10 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-23 17:17:45 | 显示全部楼层
boluobenbo 发表于 2023-5-23 17:14
谢谢回复。
前边说的1,2,3我理解
问题是“ 因此,当你使用global账号时,其作用范围为当前用户登录账 ...

感谢你提出的问题,确实有必要对git的global配置进行一些进一步的解释。

首先,需要明确的是, git config --global 并不是用来告诉git监视所有文件夹的。事实上,git并不会全局监视你电脑上的所有文件或者文件夹。它只会监视已经通过 git init 或 git clone 命令初始化过的项目文件夹(也就是包含.git子文件夹的文件夹)。如果一个文件夹没有被初始化为git仓库,git是不会去监视它的。

所以,当你使用 git config --global 设置全局用户名和邮箱时,你并没有告诉git去监视所有的文件和文件夹,而只是设置了当你在任何已初始化的git仓库中操作时,默认的用户名和邮箱是什么。这样的设置是方便你在多个git仓库中进行操作时,不用每次都设置用户名和邮箱。

至于你说的“用户只希望git 的global账号监控存有代码的A,B ,c文件夹下的代码”,这个可以通过在这些文件夹中分别进行 git init 初始化为git仓库来实现。一旦这些文件夹被初始化为git仓库,git就会开始监视这些文件夹下的所有文件的变动。

总的来说, git config --global 并不是用来监视所有文件夹,而是用来设置全局的git配置,比如用户名和邮箱。要让git监视特定的文件夹,需要在这些文件夹中分别进行 git init 命令初始化为git仓库。希望这个解答能帮助你理解。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2023-5-23 17:58:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-23 18:01:45 | 显示全部楼层
boluobenbo 发表于 2023-5-23 17:58
谢谢你的回答。很有帮助,我基本明白了。

假设AB C文件夹都被git初始化过了。我现在用global用户想只 ...

首先,我想澄清一下"global"和"local"用户的概念。在Git中,"global"和"local"并不是指用户,而是指git的配置级别。全局配置文件(global)通常存储在用户的主目录下,名为.gitconfig。本地配置文件(local)存储在每个git仓库的根目录下的.git/config中。

当我们谈论"切换用户"时,我们实际上是在切换git配置中的用户名和电子邮件。这在你需要在不同的仓库中以不同的用户名和/或电子邮件进行commit操作时可能会很有用。

1. Git没有内置的"切换用户"功能。如果你需要使用不同的用户名和/或电子邮件进行commit操作,你可以在每个仓库中单独配置,或者在你的全局git配置中设置一个默认的用户名和电子邮件,然后在特定的仓库中覆盖这个设置。这可以通过以下命令来完成:

   在全局配置中设置默认用户名和电子邮件:

   git config --global user.name "Global User"
   git config --global user.email "globaluser@example.com"
   

   然后在特定的仓库中覆盖全局配置:

   cd /path/to/repo
   git config user.name "Local User"
   git config user.email "localuser@example.com"
   

   这样,全局配置中的用户名和电子邮件将会在所有的仓库中生效,除非在特定的仓库中被覆盖。

2. 如果你想让git在某个仓库中忽略某个文件或者文件夹,你可以使用.gitignore文件。在你的仓库中创建一个名为.gitignore的文件,然后在这个文件中列出你想要git忽略的文件或者文件夹。

   如果你想忽略C文件夹,你可以在.gitignore文件中添加一行:

   C/
   

   这样git就会忽略C文件夹中的所有文件。

需要注意的是,git命令如 git status 和 git add 需要在特定的仓库中运行,而不是在全局用户级别。git并不知道全局范围内有哪些仓库,所以它不能在所有已经初始化的仓库中运行 git status 或 git add 。你需要在每个仓库中单独运行这些命令。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2023-5-23 19:49:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-23 19:51:20 | 显示全部楼层    本楼为最佳答案   
boluobenbo 发表于 2023-5-23 19:49
1、在Git中,"global"和"local"并不是指用户,而是指git的配置级别----------谢谢你的纠正。

2、假设 ...

在你配置了全局和本地的用户名称和邮箱之后,git会自动决定在commit操作中使用哪个用户信息。git的配置层级有以下三级:

· local:位于仓库的.git/config文件中。
· global:位于用户的家目录下的.gitconfig文件中。
· system:对所有用户和所有仓库都生效的配置,位于git的安装目录下。

在git进行commit操作时,它会按照上述的优先级(local > global > system)选择用户名和邮箱。也就是说,如果在仓库的配置中设置了用户名和邮箱,那么git会使用这个用户名和邮箱进行commit。如果仓库的配置中没有设置用户名和邮箱,那么git会使用全局配置中的用户名和邮箱。

所以,如果你已经按照上述步骤设置了全局和本地的用户名和邮箱,那么在进行commit操作时:

· 在/path/to/repo仓库中,git会使用"Local User"的配置进行commit,因为本地配置优先于全局配置。
· 在其他仓库中,如果这个仓库没有本地的用户名和邮箱配置,那么git会使用"Global User"的配置进行commit。

你不需要输入特殊的命令来选择使用哪个配置进行commit,git会自动进行选择。只需要按照通常的方式进行commit操作就可以了:
git add .
git commit -m "Your commit message"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2023-5-23 21:15:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 21:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表