常用的 Git 命令
一些需要掌握的 Git 命令
所有的用法都可以在《Pro Git》中找到
Git 的基本概念
(提交)版本
一次提交可以看作是一个版本,它包含了该次提交的所有文件
提交的哈希值(hash)
每个提交独一无二的身份表示,需要通过它来切换各个版本,可通过 git log 查看
版本库
Git 的版本库可以理解成一个存放了各个提交版本的数据库,你可以从中恢复保存的历史版本
忽略文件
在 .gitignore 中指定的文件都不会被保存在版本库里,多是测试文件
HEAD 指针
HEAD 指向一个版本库里的一个提交版本,表示当前的工作是基于某一个版本,它是切换版本的核心
文件的三种状态:
-
已提交(commited):表示已被 Git 安全地保存在本地数据库
-
已修改(modified):表示修改了某个文件,但还没有提交保存
-
已暂存(staged):表示把已修改的文件放在下次提交时要保存的清单中
其实文件还有一种状态:忽略(ignored),表示 Git 不会保存该文件
常用的 Git 命令
[]表示可选项;<>表示必填项
需要掌握的
| 命令 | 简介 |
|---|---|
git add <文件或路径> |
将文件或路径加入暂存区 |
git commit [-m] [-a] |
将暂存区的文件提交到 Git 的版本库 |
git checkout <文件或路径> |
将指定文件或路径恢复到当前版本里的样子 |
git log [-n] |
查看提交信息 |
git clone <远程仓库地址> |
克隆远程仓库,会将远程仓库的根目录完整复制到当前目录下 |
git remote -v |
查看远程仓库信息 |
git remote add <远程仓库名> <仓库地址> |
添加远程仓库,远程仓库名需要自己取 |
git push [-u] <远程仓库名> <远程分支> |
将本地仓库的当前分支推送到远程仓库的指定分支 |
git pull |
拉取远程仓库,会将 HEAD 改为和远程仓库里的一样 |
git fetch |
抓取远程仓库的数据,但是不会影响 HEAD 的指向 |
与分支相关的
| 命令 | 简介 |
|---|---|
git branch <分支名> |
添加新的分支 |
git switch <分支名> |
切换到指定分支 |
git branch -d <分支名> |
删除指定分支 |
git merge <另一分支> |
将当前分支和另一分支合并 |
了解即可的
| 命令 | 简介 |
|---|---|
git reset <提交的哈希值> |
回到哈希值对应的版本 |
git rebase <另一分支> |
也是合并,但是会生成更干净的提交历史 |
最佳实践
-
给远程仓库起个有意义的名字,例如
# 将默认的远程仓库名 origin 改成 github git remote rename origin github -
设置默认推拉仓库分支,例如:
# 推送到 github 表示的远程仓库的 master 分支,并设置其为默认推拉仓库分支 git push -u github master # 然后就可以只用 git push,而不需要指定仓库分支 git push -
设置命令别名,例如:
# 设置别名 info git config --global alias.info 'log --pretty=format:"%h - %an, %ar : %s" --graph' # 然后就可以用 git info 查看格式化过的提交信息 git push -
多使用分支,尤其是在多人协作的仓库上,尽量在自己新建的分支上修改代码,需要提交时,和主分支合并或衍合后再提交
-
在推送到远程仓库前,最好先拉取远程仓库