目录
1. 基本概念
- 版本库(.git)
使用git init时,当前目录会生成一个.git文件,这个文件称之为版本库。
- 工作区
本地项目存放文件的位置。
- 暂存区(Index/Stage)
使用git add时,会将工作区的文件放到暂存区。
- 本地仓库(Repository)
使用git commit时,会将暂存区的文件添加到本地仓库。
- 远程仓库(Remote)
远程托管代码的仓库,如git、github、gitlab。
2. Git三种状态
- 已提交(committed):表示数据已经安全的保存在本地仓库中。
- 已修改(modified):表示已经修改了文件,但是还没有保存到本地仓库中。
- 已暂存(staged):表示对一个已修改的文件的当前版本进行了标记,使之包含在下次提交的快照中。
3. Git的常用指令
3.1 仓库配置
- 配置全局用户名称
git config --global user.name "用户名"
- 配置全局邮箱
git config --global user.email "邮箱"
- 配置当前仓库用户名称
git config user.name "用户名"
- 配置当前仓库邮箱
git config user.email "邮箱"
- 查看Git全局配置
git config --global -l
3.2 仓库操作
- 创建本地仓库
git init
- 将本地项目连接到远程git仓库
git remote add origin <远程仓库链接>
- 查看远端仓库信息
git remote -v
- 远端仓库重新命名
git remote rename <原名称> <新名称>
- 克隆远程仓库
git clone <Git的SSH或HTTP>
- 从远处仓库获取最新版本
git fetch
- 从远处仓库获取最新版本并merge到本地
git pull
3.3 文件操作
- 查看当前文件状态
git status <文件名>
- 查看所有文件状态
git status
- 将文件添加到暂存区(当个文件)
git add <文件名>
- 将文件添加到暂存区(全部文件)
git add .
- 提交暂存区的内容到本地仓库
git commit -m "评论"
- 存储当前分支的改动到stash
git stash save "注释"
- 查看全部存储列表
git stash list
- 释放最近一次保存的内容,并将内容出栈
git stash pop
- 将堆栈的内容恢复到当前分支下
git stash apply stash@{num}
- 清除全部的stash
git stash clear
- 查看堆栈的stash和当前目录的差异
git stash show
- 比较工作区和缓存区的区别
git diff
- 比较工作区和本地仓库的区别(最近一次提交)
git diff HEAD
- 比较暂存区和本地仓库的区别(最近一次提交)
git diff --cached
- 比较不同提交的区别
git diff <版本号1> <版本号2>
3.4 分支操作
- 查看本地分支
git branch
- 查看远程分支
git branch -r
- 查看本地和远程分支
git branch -a
- 创建并切换分支
git checkout -b <分支名>
- 切换分支
git checkout <分支名>
- 删除本地分支
git branch -d <分支名>
- 删除远程分支
git push origin -d <分支名>
- 当前分支与其它分支合并
git merge <分支名>
- 重命名分支
git branch -m <旧分支名> <新分支名>
- 拉取远程分支并创建本地分支
git checkout -b <本地分支名> <远程分支名>
- 合并当前分支的多个commit记录
git rebase -i HEAD~n
3.5 撤销操作
- 版本回退
git reset --(soft/mixed/hard) <要回退的提交id>
- 取消暂存区文件的添加
git reset HEAD
- 取消文件的修改
git checkout -- <要取消修改的文件名>
3.6 日志查询
- 查看日志
git log
- 查看所有历史操作记录
git reflog
4. 基本使用流程
- 从克隆远程仓库到提交修改代码到远程仓库
1. git clone <SSH或HTT的url> 克隆远程仓库代码
2. git init 初始化本地仓库
3. git checkout -b <branch_name> 创建分支
4. git add . 将修改的文件添加到暂存区
5. git commit -m "" 将暂存区的文件添加到本地仓库
6. git push -u origin <分支名> 把当前分支的修改从本地仓库提交到远程仓库