(转自于GitHub 小白入门(五)Git 进阶)
1. Git 基础
首先我们回顾一下 Git 基础用法。
1.1 基本配置
- git --version:返回版本号
- git --help:帮助文档
- git config --list:查看所有配置
- git config --list --show-origin:查看所有配置以及它们所在的文件
- git config --global user.name “用户名”:全局配置用户名
- git config --global user.email 邮箱地址:全局配置邮箱
- git config user.name:查看用户名
- git config user.email:查看邮箱
我们在 GitHub 的每次提交理论上都会在 主页的下面产生一条绿色小方块的记录,如果你确认你提交了,但是没有绿色方块显示,那肯定是你提交代码配置的邮箱跟你 GitHub 上的邮箱不一致,GitHub 上的邮箱可以到 Setting -> Emails里查看。
1.2 基本操作
- git status :查看仓库状态
- git init:创建一个空仓库,或者重新初始化一个已有仓库
- git add:把文件添加到可提交列表(临时缓冲区)
- git commit:提交改动(增删改)至仓库
- git log:打印提交日志
- git branch:查看、添加、删除分支
- git checkout:切换分支、标签
- git merge:合并分支
- git tag:新建、查看标签
- git clone:下载仓库
2. Git 进阶
下面介绍几个有用的进阶知识。
2.1 设置别名
上面提到的基本操作,有几个使用很频繁,每次都要输入完整的单词。
使用 `alias`` 可以给这些操作七个简单的别名,就能简化输入。
基本语法是:
git config --global alias.别名 git命令
比如给 commit 和 status 起别名:
git config --global alias.ci commit
git config --global alias.st status
下次再用这两个命令就可以写:
git ci
git st
除了简单命令还可以设置组合命令,给组合命令加引号即可:
git config --global alias.pullom 'pull origin master'
git config --global alias.pushom 'push origin master'
演示
当然别名不是固定的,你可以根据习惯设定。
起别名后,你可以看到 .gitconfig
文件里有 alias
的配置,如果不需要某个别名,删掉即可。
此外,有一个厉害的 git log
命令,可以把常规的日志按结构化显示。
git log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %Cgreen(%cr)
%C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
你可以给它起名为 lg
,以后打印结构化日志直接输入 git lg
就行:
git config --global alias.lg "git log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %Cgreen(%cr)
%C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
2.2 显示改动
还记得 git add
会把文件放入暂存区吧,在git add
之前使用 git diff
可以显示你对某一文件的改动。
红色的部分前面有个 - 代表我删除的,绿色的部分前面有个 + 代表我增加的,所以从这里你们很一目了然的知道我到底对这个文件做了哪些改动。
演示
除此之外,git diff
还有其他用法:
git diff <$id1> <$id2> # 比较两次提交之间的差异
git diff <branch1>..<branch2> # 在两个分支之间比较
git diff --staged # 比较暂存区和版本库差异
2.3 版本回滚
在我们使用 Git 的时候,有时候会遇到想要回滚到某次提交之前的场景。
首先用 git log
查看版本号(commit 后面那一长串就是版本号):
演示
找到想要回退的版本号之后,在本地 Git 仓库执行如下命令,选一个即可:
git reset --hard 版本号 (抛弃当前工作区的修改)
git reset --soft 版本号 (回退到之前的版本,但保留当前工作区的修改,可以重新提交)
如果你的文件只在本地,执行上面的步骤就可以啦。
如果你的文件提交到 GitHub 上,还需要执行如下命令同步到远端:
git push origin 分支名
示本地的版本落后于远端的版本,因此我们还需要在上述命令中加上--force
参数:
git push origin 分支名 --force