常用操作

  • 1. git配置
  • 1.1 查看git版本信息
  • 1.2 配置账号信息
  • 1.3 配置vim为默认编辑器
  • 2. git分支管理
  • 2.1 拉取代码与分支操作
  • 2.2 暂存代码
  • 3. git查看提交信息
  • 4. 常见issue
  • 4.1 git头指针处于分离状态



文章记录在使用git过程中常用的一些命令,好记性不如烂笔头。

1. git配置

1.1 查看git版本信息

linux系统一般是默认安装了git的,可以使用以下命令查看git支持的命令和git的版本信息。

git --help
git --version

1.2 配置账号信息

git config 配置相关
当前用户配置的信息只对当前用户有效,对root用户和其他用户都是不可见的。
配置用户名和邮箱:

git config --global user.name 用户名
git config --global user.email 邮箱
--global的含义是全局配置,与全局配置相对应的是只对当前仓库进行配置

在不配置用户名和邮箱的情况下,可以clone代码和创建分支,然而不能执行merge、pull、push、commit等操作,因为git在管理这些操作时必须知道用户名和邮箱。不过git add在不配置用户名和邮箱的情况下可以执行,因为git add只是添加到暂存区
查看当前配置列表:

git config -l

值得注意的是,git config 可以在仓库目录执行,也可以在普通文件目录执行。在普通目录执行,看到的是–global配置,也就是全局配置;在仓库目录执行,看到的是仓库对应的配置。如下图所示,可以看到配置信息中包含origin的地址,以及各个本地分支对应的远程分支。如果配置加了–global,那么相应的配置会保存在~/.gitconfig里面。

linux 查看当前项目git仓库地址 linux查看git版本_git


git管理代码可以通过两种方式,一种是HTTPS,另外一种是SSH协议。通过HTTPS往往需要输入用户名和密码,而通过SSH协议需要在使用之前配置秘钥。SSH协议使用rsa算法,所以会生成公钥和私钥,本地生成密钥后需要把公钥复制到代码托管网站上。秘钥的生成方式如下:

ssh-keygen -t rsa -C ‘登录邮箱’

在生成秘钥的过程中可以选择保存秘钥的目录,生成密钥后,会提示密钥存储的位置。

1.3 配置vim为默认编辑器

git config --global core.editor vim

2. git分支管理

2.1 拉取代码与分支操作

如果直接使用仓库的地址,那么克隆下来的将是master分支。在github等网站上通过切换分支,可以直接获取到分支的地址,因此可以使用分支地址直接克隆。

git clone 主仓库地址
git clone 分支地址

git checkout -b 新建分支名可以用于新建分支,在没有指定源分支名时,默认当前分支是源分支。

git checkout -b dev #以当前分支为模板创建新分支
git checkout -b dev origin/dev #指定远程分支为末班创建新分支
git checkout -b dev 本地已有的分支名 #以指定的本地分支为模板创建新分支

查看所有分支

git branch -a

在代码没有冲突的情况下直接合并

git merge 分支名 #将指定分支合并到当前分支

在有冲突的情况下,冲突会写入相应的文件,例如Readme有冲突,那么冲突的内容会在Readme文件中体现,打开这个文件手动修改即可。

2.2 暂存代码

当做了一些修改,不想直接提交,而又需要切换到其它分支的时候需要暂存代码。
暂存到栈

git stash

从栈中取出

git stash pop

3. git查看提交信息

  • 查看某文件对应的commit信息,可以看到每行代码对应的commit信息
git blame arch/arm/Kconfig

linux 查看当前项目git仓库地址 linux查看git版本_用户名_02

  • 查看某个模块更新情况,使用--oneline只显示补丁commit号和名称,然后按“/”输入需要搜索的模块名称,即可进行搜索。
git log --oneline

linux 查看当前项目git仓库地址 linux查看git版本_用户名_03

  • 查看某个提交来自哪个分支,也可用git log --graph
git branch --contains fd574a2f841c
  • 查看某一文件中某个函数或者变量的跟新记录,类似的可使用"/"进行搜索
git log -p arch/xtensa/mm/fault.c

4. 常见issue

4.1 git头指针处于分离状态

git头指针处于分离状态是指HEAD指针没有指向分支而是指向某一次提交,这时如果进行commit,相应的内容不会提交到任何分支,而且未来可能会被清除。有哪些情况会造成头指针处于分离状态呢?

  1. git checkout CommitID,即使用git checkout直接切换到某一次提交。
  2. 从远程克隆了master分支,直接使用git checkout切换到其它分支也会造成头指针分离。

要保留头指针分离状态下提交的内容,可以新建一个临时分支,将这个分支合并到想要保存该提交的分支,然后删除临时分支即可。

git branch temp CommitID #为CommitID对应的提交创建临时分支
git merge temp
git branch -d temp #当前分支无法被删除