《玩转Git三剑客》学习笔记Day1

110 阅读3分钟

git基础

1. 使用Git之前需要做的最小配置

配置user信息是提交commit等操作所留操作人信息所必需的。

配置user.name和user.email

git config --global user.name 'yourname'

git config --global user.email 'youremail'

config的三个作用域

git config --local #只对某个仓库有效

git config --global #对当前用户所有仓库有效

git config --system #对系统所有登陆的用户有效

  • 查询config的配置在config后加--list
  •   git config --list --local #访问某仓库目录下的git config --list --local ##访问某仓库目录下.git/config文件
  •   git config --list --global #访问~/.gitconfig
  •   git config --list --system #访问/etc/gitconfig

从以上文件位置可以看出,对应不同作用域的内容记录在不同作用域下的文件中,且会有依次覆盖问题,比如local覆盖掉global的相同配置。

全局配置可以找一下网上现有的文件,里面有很多方便的alias

2. 建git仓库

建git仓库的两种场景:

  1. 把已有的项目纳入git管理

    1. cd 项目所在文件夹
    2. git init
  2. 新建的项目直接用git管理

    1. cd 某个文件夹
    2. git init your_project #会在当前路径下创建your_project同名的文件夹
    3. cd your_project

init后会在your_project下生成一个.git的文件夹,里面有HEAD、config、description、hooks、info、objects、refs等文件。

3. git常用指令

往仓库里添加文件

【工作目录】->git add files->【暂存区】->git commit->【版本历史】

  • 在当前目录下新追踪一个文件或者递归追踪一个目录,用git add指令,如果是git add一个目录名,则会把目录下的所有文件和子目录都递归add。
  • 注意添加到暂存区后就已经被git管理了,可以通过git进行回退,执行stage和unstage操作,暂存区和工作目录本身就可以轻量化地进行一次异化管理。
  • 注意要从暂存区移除某个文件的文件追踪,使用git rm指令,--cached只去除索引,不删除本地文件,-f会删除索引和本地文件
  • git add -u会把已经跟踪的文件的最新未在暂存区的改动加入暂存区。

git commit之后,objects下多了两个文件,

重命名一个文件

麻烦做法:

    1. 实际重命名文件 mv originname newname
    2. git add newname
    3. git rm originname
  • 后会被git识别为是rename操作

优雅做法:

  • git mv originname newname

git log查看版本演变历史

git log --oneline 每个commit都只展示一行,hash + commit message

git log -n4 展示最近的4次commit

git log --all 展示所有branch的commit信息

git log --graph 展示commit之间的树状图信息,尤其是加上--all后会展示branch之间的演进历史

git图形化工具gitk使用

若本机没有gitk指令,需要进行安装brew install git-gui

安装过程可能会遇到问题,brew的问题可以通过brew doctor修复,并brew update更新。

  • 某次commit既有作者(author)也有提交者,二者可能不一样,在cherry-pick的时候