基本代码
- 初始化git(建立工作目录):git init
- 了解所在位置:pwd
- 创建新目录:mkdir ***
- 列出显性文件:ls
- 列出所有文件:ls -A
- 切换目录:cd ***
- 目录回退:cd ..
向git介绍自己的信息
- 向git进行自我介绍:git config --global user.name "*****"
- 告诉git自己的邮箱:git config user.email "*****"
git3个阶段转换的代码及状态查看
- 将工作目录的某个文件复制到索引:git add ****
- 将索引上的某个文件提交到对象数据库:git commit -m "****"
- 工作目录的状态查看:git status
分支
- 创建新的分支:git branch ****
- 列出所有分支(有*的为当前所处分支):git branch
- 切换分支:git switch ***
- 记录分支名和最后一个提交的ID: git branch -v
- 帮助: git branch -h(简洁版本)/ git branch -help(详细版本)
- 分支合并:git merge **** (此处需要注意要将分支转到集成分支,即欲将****并入目的分支上,需确保此时在目的分支上,再执行该分支合并代码)
- 删除分支:git branch -d ****
- 撤销分支的删除:git branch <branch-name> <base-commit-id>
调查
查看当前分支提交史的几种方式:
- 详细列出当前分支的所有提交:git log
- 显示提交ID中能唯一识别的标识即可:git log --abbrev-commit
- 不显示作者和日期的信息:git log --pretty=oneline
- 即不显示全部ID,也不显示作者和日期的信息:git log --pretty=oneline --abbrev-commit 或简化为:git log --oneline
查看所有分支的所有提交史:
对命令进行说明:(注:‘git log’ 后的字段位置可按需任意变换或删除)
- log 命令是查看日志的命令
- --oneline 是显示缩略的提交,且为单行
- --all 在日志中显示所有分支
- --graph 将日志显示为一个图
因此,缩略显示所有分支的所有提交为:git log --oneline --all --graph
比较状态中文件的差异
(说明:工作目录的文件为修改后保存的最初文件
索引中的文件为文件修改保存后,并且执行了git add 的文件
对象数据库文件为文件修改保存后,执行了git add 、git commit 的文件)
- 比较索引中文件(旧)和工作目录中文件(新)的差异(行差异):git diff
- 比较索引中文件(旧)和工作目录中文件(新)的差异(单词差异):git diff --word-diff
- 比较对象数据库文件(旧)和索引中的文件(新)的差异:git diff --cached 或git diff --staged
比较分支“顶端”文件中的差异
- 比较不同分支上文件的差异:git diff 目标分支a- 源分支b+ (后欲将源分支b合并到目标分支a上)
比较提交
两个提交甚至可以不在同一个分支上,提交ID可以通过git log系列命令查到
- 通过两个提交ID去比较两个提交之间的差异:git diff 目标ID- 源ID+
- 通过当前提交(HEAD)与祖先提交(HEAD~1/HEAD~2...)之间比较差异:git diff HEAD~1 HEAD
- 对于有两个父提交的提交:git diff HEAD^1 HEAD^2
- 其中HEAD^1为申请分支的最后一个提交,HEAD^2是被申请分支的最后一个提交
- 还能将^与~合并使用,^后的数看哪个分支,~后的数看当前位置往后的祖先个数
撤销
注意要时刻使用git status观察状态,git log查看日志,
- 对已提交的文件进行修改后,需要撤销工作目录中的变更(撤销修改):git restore 文件名
- 对已提交的文件进行修改后,需要撤销索引中文件的变更:git restore --staged 文件名
- 对已提交的文件进行删除(工作目录和索引同时变,数据库需提交保存):git rm 文件名
- 删除目录(目录中的文件全部删除):git rm -r 目录名
- 对已提交的文件进行重命名或者移动(工作目录和索引同时变):git mv 原文件名 变更名
- 对已提交的文件进行提交消息的编辑:git commit --amend -m "修改提交消息"
- 对分支重命名(切换到需要修改名字的分支):git branch -m 分支新名 或 git brach -move 分支新名
- 对分支重命名(不需要切换到修改名字的分支):git branch -m 原分支名 新分支名