Git 实用命令

git  config:

  git config命令就是对git进行一些配置。而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?

从上图我们可以看到相关的三个关键词,即localglobalsystem,这就是git里的3个配置文件 

  • .git/config 文件,即「仓库级配置」文件:这个配置中的设置只对当前所在仓库有效。使用.git/config --local,此时读写的就是这个文件。这里的配置仅仅针对当前项目有效。
  • ~/.gitconfig 文件,即「全局级配置」文件:用户目录下的配置文件只适用于该用户。可以使用 git config --global 选项去设置它。
  • /etc/gitconfig 文件,即「系统级配置」文件:系统中对所有用户都普遍适用的配置。可以使用 git config --system 选项。

如何选择要操作的配置文件

上文提到了三种配置文件,及其适用的情况。那么我们应该操作哪个配置文件呢?答案当然是根据不同情况而定啦~

(1) git config [--local] 针对一个仓库

使用场景:只想在某个项目中生效,而不是在所有的git仓库中都生效

例如:

$ git config core.ignorecase false

(2) git config --global 针对一个用户

使用场景:想让当前用户操作的所有仓库都生效,例如下面要说的配置快捷键

(3) git config --system 针对一个系统,必须要管理员权限,即使用sudo
使用场景:让这个系统下的所有用户操作的仓库都生效,例如配置文本编辑器的,就可以针对系统去设置

查看配置项及其优先级

了解了以上三种配置类型后,那么,怎么查看具体的配置呢?我们可以用以下的命令来查看

$ git config [--local|--global|--system] --list
// 或者
$ git config [--local|--global|–system] -l
// 注意:使用list时有两个横线“--” ,使用简写的 l 时仅有一个“-”

$ git config -l 为查看当前生效的配置,即三个配置文件的集合

我们可以来尝试一下

 
上图是 local级 的配置。我们还可以用 cat命令 来查看该config文件

从这个图我们可以清楚的看到,在git中,每一项的配置名称又叫做“section”,“section”下面的每一行对应着一个key和一个value。

比如上图中的 core 即为一个 section,名为 repositoryformatversion 的 key 对应的 value 为0。每个 section 可以对应很多对key、value,而key、value必定成对出现,但并不是一对一,也就是说一个key可以设置多个value(git默认采用最后一个)。


这是 global级 的配置。与 local级 的比较下,我们很快便意识到,cat.name 在 local级 值为duanwu,而在 global级 的值却为miao。
那么,问题来了,一个git项目中的配置到底是由什么决定的呢?这就涉及到配置项的优先级问题了。

对于git来说,配置文件的权重是「仓库 > 全局 > 系统」,即 「local > global > system」。git 会使用这一系列的配置文件来存储你定义的偏好,它首先会查找 /etc/gitconfig 文件(系统级),然后查找每个用户的 ~/.gitconfig文件(全局级)。最后查找由用户定义的各个库中Git目录下的配置文件 .git/config(仓库级)。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

其实很好理解,因为它是按 system、global、local 的顺序查找的,后面的同名配置会覆盖上一级的配置。

增删改查        

了解完配置文件的基本情况,下面就该谈谈怎么用了。PS:以下详细介绍了各常用命令并配图,有兴趣的可以自己也操作一遍~

回到图1,其中的Action,涉及到的都是git config的用法。

首先要知道的是,①增、删、改,若不显式说明是哪个配置,则默认操作的是 local 配置。②对 system 进行增删改操作时,需要管理员权限

1. 增:--add

$ git config [–-local | global | system--add section.name value

例:git config --add cat.name niuniu (默认情况,即添加到local配置中,如下图)

  正如上面说的,key和value必须成对出现,缺一不可,缺项则报错,如下。

2. 删:--unset | --unset-all | --remove-section

$ git config [–-local | global | system] --unset section.name

例,git config --unset cat.age


            
若是一个key对应多个value,那么应该把要删除的value带上,否则会报错(如下)

倘若想一次性把某个属性的所有值都删掉,则用--unset-all命令

$ git config [–-local | global | system] --unset-all section.name

例,git config --unset -all cat.name

以上两个命令就是与add相对,删除配置项的某个属性值(或所有属性值)。虽然属性值删除了,但该配置项还存在,若想将配置项删除,则使用remove-section命令

$ git config [–-local | global | system--remove-section section

3. 改:--rename-section | --replace-all

// 重新设值(前提:此key只对应一个value,否则报错) 
$ git config [–-local | global | system] section.key newValue

// 重命名
$ git config [–-local | global | system] --rename-section oldName newName

// 替换所有的值
 $ git config [–-local | global | system] --replace-all section.key newValue

此时,将会把key对应的所有value值都替换成新的。需要注意的是,此时最终只保留一个value(如下例)

    
我们也可以直接编辑配置文件,用以下命令:

$ git config --local -e | git config --local --edit

缺local项时默认编辑local文件

4. 查:get | get-all | get-regexp

获取某个属性值

$ git config [--local | global | system] --get section.key [value]

如果此key对应多个value,且获取时不带具体的value,那么获取的是最后的value(如下例)
当然了,如果 global, system 下也有对应的cat.name,那该项是会被local下覆盖的,也就是获取不到的(记住查找的顺序,永远是先system 再 global 再 local, git默认采用最后一项)
 

获取所有属性值
没有注明哪个配置的话,则是获取所有配置下的属性值,包括global,system

$ git config [--local | global | system] --get-all section.key

获取某个section下的所有key和value(包括global和system)

$ git config [--local | global | system] --get-regexp section

    

5. 查 Type:--bool | --int | --bool-or-int | --path

正如“引言”的图中Type模块下的命令,这些是用来判断value值的类型的。

  $ git config [--local | global | system] [--bool|--int|--bool-or-int|--path] section.key

例 git config --local --bool cat.name

如果cat.name的值既不是布尔值,也不能被转换为布尔值,那就会报错

常用的配置

1.配置用户信息

   当我们安装好git时,第一个要配置的就是你的个人信息——用户名和电子邮件地址,这两项配置很重要,每次commit时都会引用这两条信息,以说明是谁提交了代码。   

如上图的Author,如果你没配置个人信息,就会采用默认的情况。

2.取别名 配置快捷键

   配置快捷键虽然不是必须的,但当学会偷懒后,会给工作带来极大的便利~
平时操作git仓库时,有个常用的命令git status,status这个单词虽然短但实在容易打错。我们就可以给它取个别名 (alias意为别名):

$ git config --global alias.st status

这条命令表示 alias.st = status,以后就可以使用 git st 代替烦人的 git status 啦~

同时,用这种方法也能创建新的命令,例如用 last 表示查看最后一次提交

$ git config --global alias.last 'log -1 HEAD'

常用的命令还有很多,都可以简写。很多人都用 co 表示checkout,ci 表示commit,br 表示 branch,当然你也可以自己命名,用的顺手就可以啦~

3.文本编辑器

   git也可以设置默认使用的文本编辑器。当需要你输入一些额外消息的时候,会自动调用一个外部文本编辑器给你用。默认会使用操作系统指定的默认编辑器,一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置:

$ git config --global core.editor emacs

4.差异分析工具

还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:

 

$ git config --global merge.tool vimdiff

 

git下中文乱码:

  git 默认中文文件名是 \xxx\xxx 等八进制形式,是因为 对0x80以上的字符进行quote。只需要设置core.quotepath设为false,就不会对0x80以上的字符进行quote。中文显示正常

    git config --global core.quotepath false

进入git安装目录,改一下配置就可以基本解决:

1、etc\gitconfig:

[gui]
     encoding = utf-8
[i18n]
     commitencoding = gbk
[svn]
     pathnameencoding = gbk

说明:打开 Git 环境中的中文支持。pathnameencoding设置了文件路径的中文支持。

2、etc\git-completion.bash:

alias ls='ls --show-control-chars --color=auto'

说明:使得在 Git Bash 中输入 ls 命令,可以正常显示中文文件名

3、etc\inputrc:

set output-meta on set convert-meta off

说明:使得在 Git Bash 中可以正常输入中文,比如中文的 commit log。

4、etc\profile:

export LESSCHARSET=iso8859    #或者utf-8、gbk

 

说明:$ git log 命令不像其它 vcs 一样,n 条 log 从头滚到底,它会恰当地停在第一页,按 space 键再往后翻页。这是通过将 log 送给 less 处理实现的。以上即是设置 less 的字符编码,使得 $ git log 可以正常显示中文。其实,它的值不一定要设置为 utf-8,比如 latin1 也可以……。还有个办法是 $ git –no-pager log,在选项里禁止分页,则无需设置上面的选项。

 

git 查看当前文件的修改记录

  1. git查看某个文件的提交历史

    1. git log --pretty=oneline 文件名 文件名是文件路径+文件名,输入完整 输入正确后,打印出版本号的列表 2. git show <git提交版本号> <文 ...

  2. git查看某个文件修改历史

    [git查看某个文件修改历史] 1.使用git命令 git whatchanged charge.lua 显示某个文件的每个版本提交信息:提交日期,提交人员,版本号,提交备注(没有修改细节) git ...

  3. git查看某个文件的修改历史

    <转自 http://www.cnblogs.com/flyme/archive/2011/11/28/2265899.html> 有时候在比对代码时,看到某些改动,但不清楚这个改动的作者 ...

  4. 【Linux/Ubuntu学习 11】git查看某个文件的修改历史

    有时候在比对代码时,看到某些改动,但不清楚这个改动的作者和原因,也不知道对应的BUG号,也就是说无从查到这些改动的具体原因了- [注]:某个文件的改动是有限次的,而且每次代码修改的提交都会有commi ...

  5. git 查看某文件的修改历史

    前提 先进入此文件所在的目录下 1. git log filename可以看到fileName相关的commit记录2. git log -p filename可以显示每次提交的diff3. 只看某次 ...

  6. Git 学习笔记--git 查看某个文件的修改历史

    1. git log -p filename 查看文件的每一个详细的历史修改,如果没有-p选项,只显示提交记录,不显示文件内容修改,git log -p -3 filename 显示最近的3次提交. ...

  7. git 查看某个文件的历史修改版本

    [git status 查看修改的文件路径] git log --follow -p routes/admin/contract_operation.js

  8. Git查看单个文件修改历史

    1 命令 git log --pretty=oneline  文件名 ➜ admin git:(feature/v1.5.0_20181202_group) git log --pretty=onel ...

  9. git查看一个文件的历史记录

    git log --all -- '*'FILENAME'*' 支持模糊查询 主要用于查找历史上被删除的文件 可以做成git的一个快捷命令 find = "!f(){ git log --a ...

 

参考: https://blog.csdn.net/u010274449/article/details/124179992  
      • git init 将此目录初始化为可以被git所管理的目录
      • git add 添加文件到版本库中
      • git commit -m”first commit” 提交到本地仓库
      • git remote add origin 你的远程库地址 关联到远程仓库
      • git push -u origin master 推送到远程库
      • git status 状态查询
    • 创建开发分支

      • git clone 远程仓库的url链接
      • git branch develop
      • git push origin develop
    • 开发新功能

      • git branch -b feature-some develop
      • 开发
      • git status
      • git add
      • git commit
    • 推送到远程仓库
      -git push

    • 删除开发分支

      • git branch -d feature-some
    • 发布你的程序

      • git checkout -b release-0.1 develop
    • 合并修改到 master 和 develop

      • git checkout master
      • git merge release-0.1
      • git push
      • git checkout develop
      • git merge release-0.1
      • git push
      • git branch -d release-0.1
    • 打标签

      • git tag -a 0.1 -m “Initial public release master”
    • 修复bug

      • git checkout -b issue-#001 master
      • FIX THE BUGS
      • git checkout master
      • git merge issue-#001
      • git push
      • git checkout develop
      • git merge issue-#001
      • git push
      • git branch -d issue-#001
posted @ 2023-05-23 17:32  konglingbin  阅读(87)  评论(0编辑  收藏  举报