Git 基本使用
Git 是什么?
Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。 Git 易于学习,占用空间小,具有闪电般的快速性能。它具有廉价的本地分支,方便的暂存区域和多个工作流等功能,其性能优于 SubCM,CVS,Perforce 和 ClearCase 等 SCM 工具。
- 分布式开发
- 免费开源
- 速度快、体积小
很多新手误以为 Git 就是 GitHub,事实上 Git 是一个版本控制系统,而 GitHub 是一个商业网站,虽然 GitHub 很好用,但是 Git 才是本体。
Git 安装
安装 Git 的步骤非常简单,在 官方网站 直接下载安装,安装步骤这里就省略了,安装完成后会发现鼠标右键出现Git Bash Here
字样,或者在菜单里搜索 Git Bash
即可。
配置用户名和邮箱
初次安装 Git 需要配置用户名和邮箱,在 Git Bash 中进行如下配置。
代码语言:javascript复制git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
注意 git config 命令的 --global
参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和 Email
地址。
git config user.name '你的用户名'
git config user.email '你的邮箱'
查看配置信息
要检查已有的配置信息,可以使用 git config --list
命令,也可以直接查阅某个环境变量的设定。
# 打印所有config
git config --list
# 打印指定config
git config user.name
工作区、暂存区、版本库、远程仓库
- 工作区(workspace): 在电脑里能看到的目录
- 暂存区(index): 缓存区域,临时保存你的改动
- 版本库(repository): 存放数据的位置,这里面有提交的所有版本的数据
- Git 仓库(remote): 远程仓库,托管代码
Git 基本命令
你可以在这里查看:Git 完整命令手册
创建/初始化仓库
创建新文件夹,打开,然后执行 git init
以创建新的 git 仓库。
git init
在执行完成 git init
命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据
拉取远程仓库到本地
代码语言:javascript复制git clone <repo>
例如:
代码语言:javascript复制git clone git@github.com:EmoryHuang/test.git
执行该命令后,会在当前目录下创建一个名为 test 的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。
添加与提交
你可以把文件添加到缓存区,使用如下命令:
代码语言:javascript复制git add test1.txt # 添加单个文件
git add test1.txt text2.txt # 添加单个文件
git add ./fold # 添加整个目录
git add . # 添加所有文件
使用如下命令以实际提交改动:
代码语言:javascript复制git commit -m "代码提交信息"
完整的操作步骤示例如下
代码语言:javascript复制git init # 初始化仓库
git add . # 添加所有文件到暂存区
git commit -m "test commit" # 将暂存区内容添加到仓库
git status 命令
git status 命令用于查看在上次提交之后是否有对文件进行再次修改。
代码语言:javascript复制git status # 查看上次修改的信息
git status -s # 使用 -s 参数来获得简短的输出结果
git diff 命令
git diff 命令比较文件在暂存区和工作区的差异。
代码语言:javascript复制git diff # 尚未缓存的改动
git diff --cached # 查看已缓存的改动
git diff HEAD # 查看已缓存的与未缓存的所有改动
git diff --stat # 显示摘要而非整个 diff
回退版本
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
代码语言:javascript复制git reset --hard HEAD # 回退到当前最新提交
git reset --hard HEAD^ # 回退到上次提交
git reset --hard commitid # 回退到某次提交
撤销修改
你可以使用如下命令替换掉本地改动:
代码语言:javascript复制git checkout <filename> # 撤销修改
删除文件
git rm 命令用于删除文件。
代码语言:javascript复制git rm 1.txt # 从暂存区中删除文件
git rm --cached 1.txt # 从暂存区中删除文件,但是本地不删除该文件
重命名文件
git mv 命令用于移动或重命名一个文件、目录或软连接。
代码语言:javascript复制git mv <file> <newfile>
日志
在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看
代码语言:javascript复制git log # 提交详情
git log --oneline # 提交简介
git log --all --graph # graph模式
Git 远程操作
git remote 命令
代码语言:javascript复制git remote -v # 显示所有远程仓库
git remote add <shortname> <url> # 添加远程版本库
git remote add origin https://github.com/EmoryHuang/test.git
git remote rm name # 删除远程仓库
git push 命令
代码语言:javascript复制# 将本地的分支版本上传到远程并合并
git push <远程主机名> <本地分支名>:<远程分支名>
# 如果本地分支名与远程分支名相同
git push <远程主机名> <本地分支名>
# 将本地的 master 分支推送到 origin 主机的 master 分支
git push -u origin master
git pull 命令
代码语言:javascript复制git pull <远程主机名> <远程分支名>:<本地分支名>
# 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
# 如果远程分支是与当前分支合并
git pull origin master
Git 分支
执行 git init 的时候,默认情况下 Git 就会创建 master 分支。
代码语言:javascript复制git branch # 查看分支
git branch <branchName> # 创建分支
git checkout <branchName> # 切换分支
git branch -d <branchName> # 删除分支
git merge <branchName> # 合并某分支到当前分支
代码版本
代码语言:javascript复制git tag # 查看所有标签
git tag <tagName> # 给当前版本添加标签
git tag -d <tagName> # 删除标签
git tag v1.0 # 创建一个名为v1.0的标签
参考
- git 常用命令总结
- git 的基本使用
- Git 教程
- git - 简明指南