美文网首页
Git:知识回顾

Git:知识回顾

作者: 春暖花已开 | 来源:发表于2021-11-08 22:25 被阅读0次

    一、起步之Git的设置与配置

    Git的配置分为系统级别—system用户级别—global仓库级别—local,他们对应的配置文件分别放在/etc/gitconfig~/.gitconfig~/.config/git/config.git/config里。

    $ git config --local #只对某个仓库有效;优先级最高
    $ git config --global #对当前用户下的所有git仓库有效;优先级中
    $ git config --system #对系统所有登录用户有效;优先级最低
    

    每一级别会覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。也就是说,仓库级别的优先级最高。(一般我们都是使用用户级别的配置)

    1、用户信息
    a. 命令设置用户名和邮件地址(使用了 --global 选项,那么该命令只需要运行一次):
    $ git config --global user.name 'Lynn Zhang'
    $ git config --global user.email 'lynn@qq.com'
    
    b. 检查配置信息

    可以通过以下命令查看所有的配置及他们所在的文件:

    $ git config --global -l
    

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

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

    $ git config --global user.name
    Lynn Zhang
    
    2、Git别名

    通过 git config -l 查看系统为我们预设的别名:

    $ alias.s=status
    $ alias.a=!git add . && git status
    $ alias.au=!git add -u . && git status
    $ alias.aa=!git add . && git add -u . && git status
    $ alias.c=commit
    $ alias.cm=commit -m
    $ alias.ca=commit --amend
    $ alias.ac=!git add . && git commit
    $ alias.acm=!git add . && git commit -m
    $ alias.l=log --graph --all --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset'
    $ alias.ll=log --stat --abbrev-commit
    $ alias.lg=log --color --graph --pretty=format:'%C(bold white)%h%Creset -%C(bold green)%d%Creset %s %C(bold green)(%cr)%Creset %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
    $ alias.llg=log --color --graph --pretty=format:'%C(bold white)%H %d%Creset%n%s%n%
    

    那么,当需要输入 git status 的时候,只需要输入 git s。往往,系统给预设的这些命令是不够的,就需要创建自己的别名了。

    以下是举例设置自定义别名的示例:

    a. 取消暂存
    $ git config --global alias.unstage 'reset HEAD --'
    

    这会使下面的两个命令等价:

    $ git unstage fileA
    $ git reset HEAD -- fileA
    
    b. 查看最后一次的提交
    $ git config --global alias.last 'log -1 HEAD'
    
    c. 要执行外部命令,而不是一个 Git 子命令。 如果是那样的话,可以在命令前面加入 ! 符号。
    $ git config --global alias.visual '!gitk'
    
    3、凭证存储

    使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据。然而,这对 HTTP 协议来说是不可能的。

    但Git 拥有一个凭证系统来处理这个事情。 下面有一些 Git 的选项:

    • 默认所有都不缓存。 每一次连接都会询问你的用户名和密码。
    • “cache” 模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。
    • “store” 模式会将凭证用明文的形式存放在磁盘中,并且永不过期。 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的 home 目录下。
    • 如果你使用的是 Mac,Git 还有一种 “osxkeychain” 模式,它会将凭证缓存到你系统用户的钥匙串中。 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的,这种加密方式与存放 HTTPS 凭证以及 Safari 的自动填写是相同的。

    设置 Git 的配置来选择上述的一种方式

    $ git config --global credential.helper cache
    

    “store” 模式可以接受一个 --file <path> 参数,可以自定义存放密码的文件路径(默认是 ~/.git-credentials )。 “cache” 模式有 --timeout <seconds> 参数,可以设置后台进程的存活时间(默认是 “900”,也就是 15 分钟)。 下面是一个配置 “store” 模式自定义路径的例子:

    $ git config --global credential.helper 'store --file ~/.my-credentials'
    

    Git 甚至允许你配置多个辅助工具。 当查找特定服务器的凭证时,Git 会按顺序查询,并且在找到第一个回答时停止查询。 当保存凭证时,Git 会将用户名和密码发送给 所有 配置列表中的辅助工具,它们会按自己的方式处理用户名和密码。 如果你在闪存上有一个凭证文件,但又希望在该闪存被拔出的情况下使用内存缓存来保存用户名密码,.gitconfig 配置文件如下:

    [credential]
        helper = store --file /mnt/thumbdrive/.git-credentials
        helper = cache --timeout 30000
    
    4、获取帮助
    $ git help <verb>
    $ git <verb> --help
    $ man git-<verb>
    

    如,要想获得 git config 命令的手册,执行

    $ git help config
    $ git config --help
    $ man git-config
    

    二、基础

    1、获取Git仓库
    • a. 把已有项目纳入到git管理:
    $ cd 项目代码所在的文件夹
    $ git init
    
    • b. 新建的项目直接用git管理:
    $ cd 某个文件夹
    $ git init your_project #在当前目录下创建一个和项目名称同名的文件夹
    $ cd your_project
    
    • c. 克隆现有仓库:执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。
    $ git clone https://github.com/lynn/AvoidCrashKit
    

    这会在当前目录下创建一个名为 “AvoidCrashKit” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 AvoidCrashKit 文件夹,你会发现所有的项目文件已经在里面了。

    $ git clone https://github.com/lynn/AvoidCrash ProtectKit
    

    会执行与上一条命令相同的操作,但目标目录名变为了 ProtectKit

    2、常用命令
    • a. 检查当前文件状态

      $ git status
      On branch master
      Your branch is up-to-date with 'origin/master'.
      nothing to commit, working directory clean
      

    说明现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。还显示了当前所在分支,并告诉你这个分支同远程服务器上对应的分支没有偏离。

    相关文章

      网友评论

          本文标题:Git:知识回顾

          本文链接:https://www.haomeiwen.com/subject/sqbpzltx.html