git init
初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。
# 初始化本地仓库,在当前目录下生成 .git 文件夹 $ git init
git clone
从远程仓库克隆一个版本库到本地。
# 默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下 $ git clone <远程仓库的网址> # 指定本地仓库的目录 $ git clone <远程仓库的网址> <本地目录> # -b 指定要克隆的分支,默认是master分支 $ git clone <远程仓库的网址> -b <分支名称> <本地目录>
git status
查看本地仓库的状态。
# 查看本地仓库的状态 $ git status
git remote
操作远程库。
# 列出已经存在的远程仓库 $ git remote # 列出远程仓库的详细信息,在别名后面列出URL地址 $ git remote -v $ git remote --verbose # 添加远程仓库 $ git remote add <远程仓库的别名> <远程仓库的URL地址> # 修改远程仓库的别名 $ git remote rename <原远程仓库的别名> <新的别名> # 删除指定名称的远程仓库 $ git remote remove <远程仓库的别名> # 修改远程仓库的 URL 地址 $ git remote set-url <远程仓库的别名> <新的远程仓库URL地址>
git branch
操作 Git 的分支命令。
# 列出本地的所有分支,当前所在分支以 "*" 标出 $ git branch # 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出 $ git branch -v # 创建新分支,新的分支基于上一次提交建立 $ git branch <分支名> # 修改分支名称 # 如果不指定原分支名称则为当前所在分支 $ git branch -m [<原分支名称>] <新的分支名称> # 强制修改分支名称 $ git branch -M [<原分支名称>] <新的分支名称> # 删除指定的本地分支 $ git branch -d <分支名称> # 强制删除指定的本地分支 $ git branch -D <分支名称>
git checkout
检出命令,用于创建、切换分支等。
# 切换到已存在的指定分支 $ git checkout <分支名称> # 创建并切换到指定的分支,保留所有的提交记录 # 等同于 "git branch" 和 "git checkout" 两个命令合并 $ git checkout -b <分支名称> 把已经提交的记录合并到当前分支。
git cherry-pick
# 把已经提交的记录合并到当前分支 $ git cherry-pick <commit ID>
git add
把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交。
# 把指定的文件添加到暂存区中 $ git add <文件路径>
git commit
将暂存区中的文件提交到本地仓库中。
# 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息
$ git commit
# 把暂存区中的文件提交到本地仓库中并添加描述信息
$ git commit -m "<提交的描述信息>"
git fetch
从远程仓库获取最新的版本到本地的 tmp 分支上。
# 将远程仓库所有分支的最新版本全部取回到本地 $ git fetch <远程仓库的别名> # 将远程仓库指定分支的最新版本取回到本地 $ git fetch <远程主机名> <分支名>
git merge
合并分支。
# 把指定的分支合并到当前所在的分支下 $ git merge <分支名称>
git diff
比较版本之间的差异。
# 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改 $ git diff # 比较暂存区中的文件和上次提交时的差异 $ git diff --cached $ git diff --staged # 比较当前文件和上次提交时的差异 $ git diff HEAD # 查看从指定的版本之后改动的内容 $ git diff <commit ID> # 比较两个分支之间的差异 $ git diff <分支名称> <分支名称> # 查看两个分支分开后各自的改动内容 $ git diff <分支名称>...<分支名称>
git pull
从远程仓库获取最新版本并合并到本地。
首先会执行 git fetch,然后执行 git merge,把获取的分支的 HEAD 合并到当前分支。 # 从远程仓库获取最新版本。 $ git pull
git push
把本地仓库的提交推送到远程仓库。
# 把本地仓库的分支推送到远程仓库的指定分支 $ git push <远程仓库的别名> <本地分支名>:<远程分支名> # 删除指定的远程仓库的分支 $ git push <远程仓库的别名> :<远程分支名> $ git push <远程仓库的别名> --delete <远程分支名>
git log
显示提交的记录。
# 打印所有的提交记录 $ git log # 打印从第一次提交到指定的提交的记录 $ git log <commit ID> # 打印指定数量的最新提交的记录 $ git log -<指定的数量>
git reset
还原提交记录。
# 重置暂存区,但文件不受影响 # 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件 # 没有指定 commit ID 则默认为当前 HEAD $ git reset [<文件路径>] $ git reset --mixed [<文件路径>] # 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改 $ git reset <commit ID> $ git reset --mixed <commit ID> # 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改 # 相当于调用 "git reset --mixed" 命令后又做了一次 "git add" $ git reset --soft <commit ID> # 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了 $ git reset --hard <commit ID>
git revert
生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。
# 生成一个新的提交来撤销某次提交 $ git revert <commit ID>
git tag
操作标签的命令。
# 打印所有的标签 $ git tag # 添加轻量标签,指向提交对象的引用,可以指定之前的提交记录 $ git tag <标签名称> [<commit ID>] # 添加带有描述信息的附注标签,可以指定之前的提交记录 $ git tag -a <标签名称> -m <标签描述信息> [<commit ID>] # 切换到指定的标签 $ git checkout <标签名称> # 查看标签的信息 $ git show <标签名称> # 删除指定的标签 $ git tag -d <标签名称> # 将指定的标签提交到远程仓库 $ git push <远程仓库的别名> <标签名称> # 将本地所有的标签全部提交到远程仓库 $ git push <远程仓库的别名> –tags
git mv
重命名文件或者文件夹。
# 重命名指定的文件或者文件夹 $ git mv <源文件/文件夹> <目标文件/文件夹>
git rm
删除文件或者文件夹。
# 移除跟踪指定的文件,并从本地仓库的文件夹中删除 $ git rm <文件路径> # 移除跟踪指定的文件夹,并从本地仓库的文件夹中删除 $ git rm -r <文件夹路径> # 移除跟踪指定的文件,在本地仓库的文件夹中保留该文件 $ git rm --cached