本地仓库由工作目录(持有实际文件)、暂存区(Index,缓存区域,临时保存改动)、HEAD(指向最后一次提交的结果)组成
读取当前所有的git配置信息
git config --list
读取 /etc/gitconfig文件中的内容,该文件是系统中对所有用户都普遍适用的配置
git config --system --list
读取 ~/.gitconfig 文件中的内容,该文件为用户目录下的配置文件,只适用于该用户
git config --global --list
直接查看某个环境变量
git config user.name
git config user.email
配置用户信息:个人的用户名和电子邮件地址
# 如果去掉global只对当前仓库有效
git config --global user.name ""
git config --global user.email ""
针对当前仓库进行配置
git config -e
针对系统上所有仓库进行配置
git config -e --global
克隆仓库
# 克隆远程仓库到当前目录
git clone <repo>
# 克隆远程仓库到指定目录
git clone <repo> <directory>
创建仓库:初始化一个git仓库
# 使用已经存在的目录作为git仓库
git init
# 使用已经存在的目录作为git仓库
git init newrepo
提交操作:将文件提交到本地仓库
# linux 中commit信息用单引号,windows中使用双引号
git add 文件名/ *.文件后缀
git commit -m ""
查看项目的当前状态
#文件状态:
# ?? 表示新添加的或未跟踪的文件
# A 表示新添加的未跟踪文件
# M 表示修改过的文件,M在左边表示该文件被修改了并放入了暂存区,M在右边表示该文件被修改了但是还没放入到暂存区
git status
# 以精简的方式显示文件状态
git status -s
工作区已修改未提交到暂存区但想丢弃修改
git checkout -- [file]
工作区已修改并提交到了暂存区但想丢弃修改
git reset HEAD [file]
git add 命令:将工作区文件添加到暂存区
#添加一个或多个文件到暂存区
git add [file1] [file2]
#添加指定目录到暂存区,包括子目录
git add [dir]
#添加当前目录下所有文件到暂存区
git add .
git diff 命令:比较暂存区和工作区的文件差异
# 尚未缓存的改动,查看暂存区和工作区的差异
git diff
# 查看已缓存的改动即提交到暂存区的改动
git diff --cached
git diff --staged
# 查看已缓存的与未缓存的所有改动
git diff HEAD
# 显示摘要而非整个diff
git diff --stat
git commit 命令:提交暂存区文件到本地仓库
# 提交暂存区的指定文件到本地仓库 message可以是一些备注信息
git commit -m [message]
# 提交暂存区的指定文件到本地仓库
git commit [file1] [file2] -m [message]
# 添加-a参数,修改文件后不需要执行git add命令,直接提交
git commit -am [message]
git reset 命令:回退版本
# --mixed 为默认参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变
# --soft参数用于回退到某个版本
# --hard参数撤销工作区中所有未提交的修改内容,将暂存区和工作区都会退到上一次版本,并删除之前的所有信息提交
# HEAD说明:HEAD表示当前版本,HEAD^上一个版本,HEAD^^上上一个版本,HEAD^^^上上上一个版本以此类推。也可以用 ~数字表示,HEAD~0表示当前版本,HEAD~1上一个版本,HEAD~2 上上一个版本,HEAD~3上上上一个版本
git reset [--soft|--mixed|--hard] [HEAD]
git rm 命令:删除文件
# 将文件从暂存区和工作区中删除
git rm [file]
# 强行删除工作区和已修改过并放入到暂存区的文件
# f参数:强制 r参数:递归删除,后跟目录时需添加
git rm -rf [file]
# 将文件从暂存区删除,但仍想保留在当前工作目录中
git rm --cached [file]
git mv 命令:移动或重命名一个文件,目录或软链接
# 重命名
git mv [file] [newfile]
# 如果新文件名已经存在,强制命名
git mv -f [file] [newfile]
git log 命令:查看历史提交记录
git log
# 查看历史记录的简洁版本
git log --oneline
# 查看历史中什么时候出现了分支,合并
git log --graph
# 逆向显示所有日志
git log --reverse
# 查找指定用户的提交日志
git log --author=name
git blame 命令:查看指定文件的修改记录
git blame filename
git remote 命令
# 显示所有远程仓库 origin为远程地址的别名
git remote -v
# 显示某个远程仓库的信息
git remote show [远程仓库地址]
# 关联远程版本库 并推送
git remote add [本地仓库对远程仓库起的别名,一般为origin] [远程仓库地址]
# 第一次加-u参数,以后直接使用git push 即可
git push -u origin master
# 删除关联的远程仓库
git remote rm [远程仓库名]
# 修改仓库名
git remote rename old_name new_name
git fetch & git merge 命令:从远程仓库提取更新的数据并合并到当前分支、
git fetch [远程仓库别名]
git merge [远程仓库别名/分支名]
git pull 命令:从远程获取代码并合并本地的版本
git pull [远程主机名] [远程分支名]:[本地分支名]
git push 命令:将本地的分支版本上传到远程并合并
git push [远程主机名] [本地分支名]:[远程分支名]
# 强制推送
git push --force origin master
# 删除主机的分支
git push origin --delete master
git branch 命令:列出分支
# 列出分支
git branch
# 创建分支
git branch branch_name
# 切换分支
git checkout branch_name
# 创建分支并立即切换
git checkout -b branch_name
# 删除分支
git branch -d branch_name
# 合并分支,将其他分支的内容合并到主分支上
git merge [分支名]
# 合并如果有冲突,需要手动修改 并且 git add 告诉git文件冲突已经解决