文章介绍
本文主要介绍git的各种指令,包括git提交、创建分支、推送分支、分支合并、版本回退、冲突解决等。
技术前置
在阅读本文章之前,您需要git基础。
技术背景
本文提供git各种指令,方便日后检索查询。
内容
1.1 安装与初始化
-
配置全局用户名和电子邮件地址
prompt> git config --global user.name "Your Name"
prompt> git config --global user.email "you@example.com"
-
为特定的版本库配置用户名和电子邮件地址
prompt> cd /path/to/repo
prompt> git config user.name "Your Name"
prompt> git config user.email "you@example.com"
-
在命令行中使用不同显色显示不同内容
prompt> git config --global color.ui "auto"
-
初始化新版本库
prompt> mkdir /path/to/repo
prompt> cd /path/to/repo
prompt> git init
— 等待初始化 —
prompt> git add .
prompt> git commit -m 'initial import'
— 等待提交成功 —
-
克隆版本库
prompt> git clone <repository url>
— 等待初始化 —
-
将目录中的内容纳入git版本控制
prompt> cd /path/to/existing/directory
prompt> git init
— 等待初始化 —
prompt> git add.
prompt> git commit -m "initial import of some project"
-
在本地版本库中设置远程版本库的别名
prompt> git remote add <remote repository> <repository url>
1.2 基本操作
-
添加新文件或暂存已有文件上的改动,然后提交
prompt> git add <some file>
prompt> git commit -m "<some message>"
-
暂存已有文件上的部分改动
prompt> git add -p [<some file> [<some file> [and so on]]]
— 选择要提交的文本块 —
-
使用交互方式添加文件
prompt> git add -i
-
暂存已纳入git版本控制下的文件修改
prompt> git add -u [<some path> [<some path>]]
-
提交已纳入git版本控制之下的文件所有修改
prompt> git commit -m "<some message>" -a
-
清除工作目录树的修改
prompt> git checkout HEAD <osme file> [<some file>]
-
取消已暂存但尚未提交的修改的暂存标识
prompt> git reset HEAD <some file> [<some file>]
-
修复上一次提交中的问题
— 改动相关文件并暂存 —
prompt> git commit -m "<some message>" --amend
-
修复上一次提交中的问题,并复用上次的提交注释
prompt> git commit -C HEAD --amend
1.3 分支
-
列出本地分支
prompt> git branch
-
列出远程分支
prompt> git branch -r
-
列出所有分支
prompt> git branch -a
-
基于当前分支的末梢创建新分支
prompt> git branch <new branch>
-
检出另一条分支
prompt> git checkout <some branch>
-
基于当前分支创建新分支,同时检出该分支
prompt> git checkout -b <new branch>
-
基于另一个起点,创建新分支
prompt> git branch <new branch> <start point>
-
创建同名新分支,覆盖已有分支
prompt> git branch -f <some existing branch> [<start point>]
-
移动或重命名分支
-
当"new branch"不存在时
prompt> git checkout -m <existing branch name> <new branch name>
-
若"new branch"已存在,则覆盖它
prompt> git checkout -M <existing branch name> <new branch name>
-
-
把另一条分支合并到当前分支
prompt> git merge <some branch>
-
合并,但不提交
prompt> git merge --no-commit <some branch>
-
拣选合并,并提交
prompt> git cherry-pick <commit name>
-
拣选合并,不提交
prompt> git cherry-pick -n <commit name>
-
把一条分支上的内容压合到另一条分支上的一个提交
prompt> git merge --squash <some branch>
-
删除分支
-
仅当欲删除的分支已合并到当前分支时
prompt> git branch -d <branch to delete>
-
不论欲删除的分支是否已合并到当前分支
prompt> git branch -D <branch to delete>
-
1.4 历史
-
显示全部历史记录
prompt> git log
-
显示版本历史,以及版本间的内容差异
prompt> git log -p
-
只显示最近一个提交
prompt> git log -l
-
显示最近的20个提交,以及版本间的内容差异
prompt> git log -20 -p
-
显示最近6小时的提交
prompt> git log --since="6 hours"
-
显示两天之前的提交
prompt> git log --before="2 days"
-
显示比当前检出分支的末梢早3个提交的那个提交
prompt> git log -l HEAD~3
-
或者
prompt> git log -l HEAD^^^
-
或者
prompt> git log -l HEAD~l^^
-
-
显示两个版本之间的提交
prompt> git log <start point>...<end point>
-
显示历史,每个提交显示一行,包括提交注释的第一行
prompt> git log --pretty=oneline
-
显示改动行数统计
prompt> git log --stat
-
显示改动文件的名称和状态
prompt> git log --name-status
-
显示当前工作目录树和暂存区见的差别
prompt> git diff
-
显示暂存区和版本库间的差别
prompt> git diff --cached
-
显示工作目录树和版本库间的差别
prompt> git diff HEAD
-
显示工作目录树与版本库中某次提交版本之间的差别
prompt> git diff <start point>
-
显示版本库中两个版本之间的差别
prompt> git diff <start point> <end point>
-
显示差别的相关统计
prompt> git diff --stat <start point> [<end point>]
-
显示文件中各个部分的修改者及相关提交信息
prompt> git blame <some file>
-
显示文件中各个部分的修改者及相关提交信息,包括在该文件中复制、粘贴和移动内容等方面的情况
prompt> git blame -M <some file>
-
-
显示文件中各部分的修改者及相关提交信息,包括在文件间移动内容等方面的情况
prompt> git blame -C -C <some file>