# git命令练习 **Repository Path**: loyj3810/git-command-exercise ## Basic Information - **Project Name**: git命令练习 - **Description**: git命令练习项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-06-03 - **Last Updated**: 2023-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # git 命令练习 # 1、配置 config ## 1.1 查看git配置 ```shell # 查看当前系统config git config --system --list # 查看当前用户git全局配置信息 git config --global --list # 查看当前仓库配置信息 git config --local --list ``` ## 1.2 配置用户名和邮箱 ```shell # 设置用户名 git config --global user.name "your git name" # 设置邮箱 git config --blobal user.email "your git push email" ``` ## 1.3 添加配置项 ```shell git config [--local|--global|--system] selection.key value # 例如:git config --global user.name "loyj" ``` ## 1.4 删除配置项 ```shell git config [--local|--global|--system] --unset selection.key # 例如:git config --global --unset user.name ``` ## 1.5 更多配置项 ```shell git config --global color.ui true #打开所有的默认终端着色 git config --global alias.ci commit #别名 ci 是commit的别名 [alias] co = checkout ci = commit st = status pl = pull ps = push dt = difftool l = log --stat cp = cherry-pick ca = commit -a b = branch user.name #用户名 user.email #邮箱 core.editor #文本编辑器 merge.tool #差异分析工具 core.paper "less -N" #配置显示方式 color.diff true #diff颜色配置 alias.co checkout #设置别名 git config user.name #获得用户名 git config core.filemode false #忽略修改权限的文件 ``` ## 1.6 解决git每次提交和拉取代码需要输入用户名和密码问题 ```shell git config --global credential.helper store ``` # 2、创建仓库 init or clon - 方式一 ```shell # 创建并进入目录 mkdir projectName cd projectName # 初始化git git init # 添加远程git仓库地址 git remote add origin git地址 # 拉去远程master分支代码 git pull origin master ``` - 方式二 ```shell git clone git仓库地址 ``` # 3、文件跟踪 tracked ## 3.1 对文件取消跟踪 - 删除git对该文件的tracked,但并不删除文件 ```shell git rm --cashed 文件名 ``` - 删除git对该文件的tracked,并且删除文件 ```shell git rm -f 文件名 ``` ## 3.2 对目录取消跟踪 - 删除git对该目录下所有文件的tracked,但并不删除文件 ```shell git rm --cached **/目录名/ -r ``` - 删除git对该目录下所有文件的tracked,并且删除文件 ```shell git -rm -f **/目录名/ -r ``` ## 3.3 删除所有文件 - 删除所有文件的tracked,但并不删除文件 ```shell git rm -r --cached . ``` - 删除所有文件的tracked,并且删除文件 ```shell git rm -r --f . ``` # 4、提交、推送和拉取 add、commit and pull ## 4.1 git add ```shell # 以下命令都遵循.gitignore git add . # 将工作区所有文件都加入到git暂存区 git add 文件名 # 将工作区某个文件加入到git暂存区 git add -U # 将所有被tracked(跟踪)文件中被修改或删除的文件添加到暂存区,不处理untracked文件 git add -A # 添加所有被tracked(跟踪)文件中被修改或删除的文件信息到暂存区,包括untracked的文件 ``` ## 4.2 git commit ```shell # 将暂存区内容提交到本地仓库 git commit -m "本次提交的信息" # 将工作区内容提交到本地仓库(跳过了git add命令) git commit -am "本次提交的信息" ``` ## 4.3 git push ```shell # 本地分支推送到远程仓库并合并 # 本地分支名于远程分支名相同,则可省略冒号 git push 远程主机名 本地分支名:远程分支名 ``` ## 4.4 git pull ```shell git pull origin 分支名 ``` # 5、记录查看 log、diff and so on ## 5.1 提交记录查看 ```shell git log -p -次数 # 查看最近多少次的提交记录; git log --stat # 简略显示每次提交的内容更改; git log --name-only # 仅显示已修改的文件清单; git log --name-status # 显示新增,修改,删除的文件清单; git log --oneline # 让提交记录以精简的一行输出; git log --oneline --graph # 图形展示分支的合并历史; git log --author=作者 # 查询作者的提交记录(和grep同时使用要加一个–all–match参数); git log --grep=过滤信息 # 列出提交信息中包含过滤信息的提交记录; git log -S # 查询内容 和–grep类似,S和查询内容间没有空格; git log 文件名 # 查看某文件的修改记录; ``` ## 5.2 比较文件异同 ```shell git diff [分支] # 工作区与某分支的差异,远程分支这样写:remotes/origin/分支名; git diff HEAD # 工作区与HEAD指针指向的内容差异; git diff [commit id] # 文件路径 工作区某文件当前版本与历史版本的差异; git diff --staged # 工作区文件与上次提交的差异(1.6 版本前用 –cached); git diff 版本TAG gitgit# 查看从某个版本后都改动内容; git diff [devA] [devB] # 比较从分支A和分支B的差异(也支持比较两个TAG); git diff [devA]…[devB] # 比较两分支在分开后各自的改动; ``` ```shell git show [commit id] # 显示某次修改的文件,无参数则查看的是最新一次的 ``` ```shell git status # 查看工作目录中所作的更改 ``` # 6、分支 branch ## 6.1 新增分支 ==新拉的分支是以当前分支为基础的== ```shell git branch 本地分支 #新建一个分支,但仍旧停留在原分支 git checkout -b 分支名 # 新建并切换到新的分支 # 新建分支后,在该分支上操作后,推送到远程 git push --set-upstream origin 分支名 # 或者使用 git push -u origin 分支名 ``` ## 6.2 删除分支 ```shell # 删除本地的分支 git branch -d 本地分支名 # 删除本地分支 git branch -dr 远程分支名 # 删除本地的远程分支 # 删除远程仓库分支 git push origin --delete 本地分支名 # 删除远程分支 ``` ## 6.3 查看分支 ```shell git branch # 展示后,显示出来的效果,前面带*的是当前所在分支 git branch -r # 列出所有远程分支 git branch -a # 列出所有本地分支和远程分支 ``` ## 6.4 切换分支 ```shell git checkout 分支名 # 切换到指定分支 git checkout - # 切换到上一个分支 git checkout -b 分支名 # 新建并切换到新的分支 ``` ## 6.5 合并分支 ```shell git merge 目标分支名 # 合并目标分支到当前分支 git merge --quit # 推出当前分支合并,合并后冲突多,撤回合并 ``` # 7、标签 tag ## 7.1 创建tag ```shell git tag 标签名 # 以当前提交版本创建一个【轻量标签】 git tag 标签名 提交版本号(commit id) # 给某次提交添加一个【轻量标签】 git tag -a 标签名 -m 附注信息 # 给当前提交版本创建一个【附注标签】 git tag -a 标签名 提交版本号 -m 附注信息 # 给指定提交版本创建一个【附注标签】 ``` ## 7.2 查询tag ```shell git tag # 显示所有标签 git show 标签名 # 查看某个标签的详细信息 ``` ## 7.3 删除标签 ```shell git tag -d 标签名 # 删除本地指定名称的标签 git push origin --delete 标签名称 # 删除远程指定名称的标签 ``` ## 7.4 推送标签到远程 ```shell git push origin 标签名称 # 推送单个标签 git push origin --tags # 推送所有标签 ``` # 8、撤销 reset ```shell git reset HEAD^ # 恢复成上次提交的版本 git reset HEAD^^ # 恢复成上上次提交的版本,就是多个^,以此类推或用~次数 git reset HEAD~N # N直接指定倒数第几版本 git reset [--hard] [版本号|文件名] --soft:只是改变HEAD指针指向,缓存区和工作区不变; --mixed:修改HEAD指针指向,暂存区内容丢失,工作区不变; --hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态; ```