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仓库的两种场景:
-
把已有的项目纳入git管理
- cd 项目所在文件夹
- git init
-
新建的项目直接用git管理
- cd 某个文件夹
- git init your_project #会在当前路径下创建your_project同名的文件夹
- 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下多了两个文件,
重命名一个文件
麻烦做法:
-
- 实际重命名文件 mv originname newname
- git add newname
- 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的时候