1. Git简介
本地仓库由工作目录(持有实际文件)、暂存区(Index,缓存区域,临时保存改动)、HEAD(指向最后一次提交的结果)组成
- 工作区:工作目录
- 暂存区:stage或index,一般存放在 .git 目录下的index文件中
- 版本库:工作区中有一个隐藏目录 .git 为Git的版本库
2. Git配置
-
读取当前所有的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
3. Git 基本操作
-
克隆仓库
# 克隆远程仓库到当前目录 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]
4. 命令相关
-
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文件冲突已经解决