版本控制工具Git的常见命令与使用方法
目录
- 概述
- 基础命令
- 提交代码
- 把代码提交到暂存区
- 把代码提交到版本库
- 同一笔提交想追加修改
- 回退代码
- 对代码进行了修改,想回退工作区的修改
- 执行了add操作,想回退到工作区
- 执行了commit操作,想撤销修改
- 执行了commit操作,想回退到暂存区
- 挑代码
- 后记
概述
在实际的开发工作中,使用版本控制工具进行协作开发是不可避免的,而Git更是最常见的版本控制工具之一。虽然现在许多公司都会有自己的版本控制工具,但是大部分都是基于Git进行一些客制化操作,Git的命令还是都适用的。Git仓库的初始化可以参考这篇文章:Android Studio使用Git以及连接到远程库(GitHub),本文主要记录一些开发过程中常用的Git命令。
基础命令
- 创建分支
git branch <branch-name>
: 创建分支
git checkout <branch-name>
: 切换分支
git checkout -b <branch-name>
: 创建并切换分支
例如直接在Android Studio的Terminal窗口中新建并切换分支:
- 查看状态
git status
:可以查看当前仓库的状态
- 查看最近一次提交信息
git show
:可以查看最近一次提交的详细信息,包括提交者、提交信息、提交日期、文件差异等。
- 查看代码对应的提交
在AndroidStudio中,点击右键并选择Annotate with Git Blame
即可查看每行代码对应的提交:
- 获取某笔提交对应的哈希值
每笔提交都会有自己唯一的哈希值,这也是之后进行回退代码时的依据。哈希值的查看方式如下:
在第4点提及的窗口中,点击右键,即可查看提交对应的哈希值:
- 删除分支
git branch -D <branch-name>
:删除对应分支。
提交代码
Git可以分为工作区、暂存区和版本库,简单来讲就是修改后还未进行任何Git操作的代码处于工作区,执行add
命令后的代码修改处于暂存区,执行commit
命令后的代码则处于版本库中。提交代码过程中常见的命令如下:
把代码提交到暂存区
git add .
:将所有修改了但是未提交的代码及文件提交到暂存区;
git add *
:将所有修改了但是未提交的代码及文件提交到暂存区;
git add .
与git add *
的区别:git add .
会把本地所有untrack
的文件都加入暂存区,并且会根据.gitignore
做过滤;git add *
会提示已被忽略的内容,但不会直接加入。
git add <file-name>
:将指定文件添加到暂存区中。日常开发中一般使用这个命令。
把代码提交到版本库
git commit -m <commit message>
:将暂存区的代码修改提交到版本库中,其中提交信息为commit message
的内容。
git commit
:许多公司都会有自己的commit message
模板,这种情况下可以自己新建一个template
文件并放到指定目录下,执行git commit
后会自动加载该模板。修改完后再进行提交就行。需要注意的是如果commit message
中涉及换行,最好用git bash,不要用Android Studio自带的Terminal窗口。
同一笔提交想追加修改
git commit --amend
:这个命令适用于对最近一笔提交追加修改。需要注意的是,代码上的修改以及commit message
上的修改都能使用这个命令进行追加。
回退代码
对代码进行了修改,想回退工作区的修改
git restore <file-name>
:这个命令适用于对代码进行了修改,但还未提交到暂存区中的文件。使用这个命令可以将对应文件的修改回退到最近一次commit。
执行了add操作,想回退到工作区
git restore --staged <file-name>
:这个命令可以将提交到暂存区中的代码和文件回退到工作区中。
执行了commit操作,想撤销修改
git reset --hard HEAD^
:这个命令用于回退最近的一笔提交,其中,一个^
表示一笔提交,即git reset --hard HEAD^^
是回退最近的两笔提交,git reset --hard HEAD^^^
是回退最近的三笔提交。
git reset --hard <revision number>
:将分支上的代码回退到截止至这笔提交。通常用于需要批量回退的操作。
git revert <revision number>
:revert
命令也可以用于将代码回退到对应提交中。需要注意的是,revert
是提交一个新的版本,将需要revert
的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。
需要注意,Android Studio自带的Terminal窗口无法识别^
符号,涉及这个符号的命令最好在git bash中执行。
执行了commit操作,想回退到暂存区
git reset --soft HEAD^
:还有一种场景是我们已经提交了代码,想将回退代码进行修改后再重新提交,但是又不想从头修改。除了使用git commit --amend
外,还可以使用git reset --soft HEAD^
命令将最近一笔提交由版本库中回退到暂存区中。
挑代码
git cherry-pick <revision number>
:首先切换至目标分支,然后cherry-pick某分支上的特定提交到目标分支上。如果存在代码冲突Git也会进行提示,需要手动解冲突后再进行cherry-pick。
后记
之后会持续更新常用命令,也欢迎大家一起扩充Git常见的命令。