Git 常用操作(1)- 工作区域、配置用户 git config、检查配置、优先级配置(不同项目不同的 git 账户)、忽略文件配置 gitignore、配置别名 git alias、配置文件查看

Git 官网:https://git-scm.com/book/zh/v2

1. 工作区域的概念

Git 项目的三个工作区域的概念:工作目录、Git 仓库、以及暂存区域。

  • 工作目录:
    工作目录也叫工作区,即本地仓库的文件夹,肉眼可见的。

  • 仓库目录:
    在工作区中存在一个隐藏的目录 .git,它就是版本库。

  • 暂存区域:
    是一个文件,保存了下次将提交的文件列表信息,.git 目录下存在一个 index 文件,这就是 Git 的暂存区,也成为索引。

基本的 Git 工作流程如下:

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

如果 Git 目录中保存着的特定版本文件,就属于已提交状态。如果作了修改并已放入暂存区域,就属于已暂存状态。如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

git

2. 配置相关

2.1 配置用户

安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:

$ git config --global user.name "wohu"
$ git config --global user.email "wohu@163.com"

再次强调,如果使用了 --global 选项,那么该命令只需要运行一次,之后无论你在该系统上做任何事情, Git 都会使用那些信息。

当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行 --local 选项的命令来配置。

配置的作用域:

  • 缺省等同于 --local
  • git config --local:只针对某个仓库有效,可以用来配置不同仓库不同的用户名和邮箱
  • git config --global:对当前用户所有仓库有效
  • git config --system :对系统所有登录用户有效

显示配置 --list

2.2 检查配置

如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置。

$ git config --list
user.name=xxx
user.email=xxx
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=xxx
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
credential.helper=store
user.name=xxxx
user.email=xxx

类似的

$ git config --list  --local

$ git config --list  --global

$ git config --list  --system

你可能会看到重复的变量名,因为 Git 会从不同的文件中读取同一个配置(例如:/etc/gitconfig~/.gitconfig)。 这种情况下,Git 会使用它找到的每一个变量的最后一个配置。

可以通过输入 git config <key>来检查 Git 的某一项配置,例如:

$ git config user.name
wohu

2.3 优先级配置

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:

  • /etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果在执行 git config 时带上 --system 选项,那么它就会读写该文件中的配置变量。 (由于它是系统配置文件,因此你需要管理员或超级用户权限来修改它。)
  • ~/.gitconfig~/.config/git/config 文件:只针对当前用户。 你可以传递 --global 选项让 Git 读写此文件,这会对你系统上所有的仓库生效。
  • 当前使用仓库的 Git目录中的 config 文件(即 .git/config):针对该仓库。 你可以传递 --local 选项让 Git 强制读写此文件,虽然默认情况下用的就是它。。 (当然,你需要进入某个 Git 仓库中才能让该选项生效。)

每一个级别会覆盖上一级别的配置,也就是说优先级由高到底顺序为 --local > --global > --system, 所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。

2.4 颜色配置

比如,让 Git 显示颜色,会让命令输出看起来更醒目:

$ git config --global color.ui true

2.5 忽略文件配置

我们在 Git 工作区的根目录下创建一个特殊的 .gitignore文件,然后把要忽略的文件名填进去,Git 在每次进行提交的时候就会自动忽略这些文件。

日常使用中,我们一般不需要从头开始编辑 .gitignore文件,已经有各种现成的种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://gitcode.net/codechina/gitignore

如果 .gitignore写得有问题,需要找出来到底哪个规则写错了,可以用 git check-ignore命令检查:

$ git check-ignore -v 1.exe
.gitignore:2:*.exe	1.exe

Git会告诉我们,.gitignore的第 2 行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

还有些时候,当我们编写了规则排除了部分文件时:

# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class

但是我们发现 .*这个规则把 .gitignore也排除了,并且 App.class需要被添加到版本库,但是被*.class规则排除了。

这个时候,虽然可以用 git add -f强制添加进去,但我们建议你可以添加两条例外规则:

# 排除所有.开头的隐藏文件:
.*
# 排除所有.class文件:
*.class

# 不排除.gitignore和App.class:
!.gitignore
!App.class

把指定文件排除在 .gitignore规则外的写法就是 !+文件名,所以,只需把例外文件添加进去即可。

2.6 配置别名

配置 git status/commit/checkout/branch 的别名,提高输入效率。

比如在使用 git status命令时,我们可以通过配置别名的方式将其配置为 git st,这样在使用时是不是就比输入 git status简单方便很多呢?
我们只需要敲一行命令,告诉 Git,以后 st就表示 status

$ git config --global alias.st status

当然还有别的命令可以简写,很多人都用 co表示 checkoutci表示 commitbr表示 branch配置别名:

$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch

--global参数是全局参数,也就是这些命令在这台电脑的所有 Git 仓库下都可以使用。

2.7 配置文件

这些自定义的 Git 配置文件通常都存放在当前仓库的 .git/config 文件中:

$ cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = git@gitcode.net:codechina/learngit.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[alias]
    last = log -1

别名就在 [alias]后面,要删除别名,直接把对应的行删掉即可。

而当前用户的 Git 配置文件放在用户主目录下的一个隐藏文件 ~/.gitconfig 中:

$ cat .gitconfig
[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
[user]
    name = Your Name
    email = your@email.com
[color]
	ui = true

配置别名也可以直接修改这个文件,如果改错了,可以删掉文件重新通过命令配置。

2.8 删除配置

git config --global --remove-section user.name
# or
git config --global --unset-all user.name
# or
git config --global --unset user.name

3. 新建git仓库

  1. 本地有个项目代码写了一段时间了,但还没有用 git 管理起来,现在想用git在本地帮着记录变更的版本。
cd existing_folder (本地进入到项目文件夹内)
git init (执行 init 命令,会创建出 .git 目录)
git add . (把项目文件加入到 git 的暂存区)
git commit -m "Initial commit" (创建第一个 git 的commit )
  1. 很早之前本地生成了一个 git 的仓库,开发了一段时间,想把这个git仓库提交到公司git服务器新建的project中。
cd existing_repo
git remote add origin git@your_git_server:your_group/your_project.git
git push -u origin --all
git push -u origin --tags
git config --local是git命令中的一个选项,用于在本地仓库级别配置git配置文件。可以通过该命令设置本地仓库级别的配置项,这些配置项只会影响当前的仓库,不会影响其他仓库或全局配置。 举个例子,使用"git config --local user.name 'John'"命令可以在当前仓库中设置用户的姓名为John。 在git中,配置项的优先级有三个级别:仓库级别(local),用户级别(global),系统级别(system)。仓库级别的配置优先级最高,仅对当前仓库生效;用户级别的配置优先级次之,对当前用户的所有仓库生效;系统级别的配置优先级最低,对当前系统的所有用户和仓库生效。 需要注意的是,如果在执行git config --local命令时出现错误,比如"Error: Failure while executing; `git config --local --replace-all homebrew.analyticsmessage true` exited with 1.",这表示在设置本地仓库级别的配置项时出现了错误,具体的错误原因需要进一步排查。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [git config -l出现重复的配置项](https://blog.csdn.net/qq_35772435/article/details/118378927)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Error: Failure while executing; `git config --local --replace-all homebrew.analyticsmessage true](https://blog.csdn.net/qq_38113432/article/details/82285478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wohu007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值