git常用指令

# git用户配置
git config --global user.name "Your GitHub Username"
git config --global user.email "your_email@example.com"
# 将默认分支改为 main
git config --global init.defaultBranch main
# 让目录受信任,不再对其所有权进行检查
git config --global --add safe.directory /var/www/html
# 保留原始的换行符,改为true,Git会在提交时自动将CRLF转换为LF
git config --global core.autocrlf false
# 设置默认编辑器
git config --global core.editor vim
# 差异工具选择
git config --global merge.tool vimdiff

#查看配置信息
git config --list
#修改当前仓库配置信息
git config -e 
#修改所有仓库信息
git config -e --global

# 生成SSH 密钥,期间会要求输入信息,可以直接回车确认即可,密钥默认存放位置~/.ssh/id_rsa.pub
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 测试是否成功连接GitHub
ssh -T git@github.com

# 初始化git仓库
git init
# 添加文件,将当前目录下的所有文件纳入暂存区
git add ./*
# 提交暂存区的文件到版本库,并备注信息
git commit -m '初始化项目版本'
# 简化提交文件并备注消息
git commit -am 'changed the runoob.php'
# 将当前分支重命名为main
git branch -M main
# 将本地仓库与远程仓库关联
git remote add origin git@github.com:hamster/test.git
# 本地代码推送到远程仓库
git push origin master:master
# u的作用是本地分支和远程库分支相关联,下次执行git push或者git pull就不需要再指定分支了
git push -u origin main

# 克隆远程仓库到本地
git clone git@github.com:hamster/test.git

# 显示工作区和暂存区及暂存区和版本库之间的差异
git diff
#按q退出,如果没反应,那就:q。

# 显示工作区和暂存区的状态
git status
# 简短的显示工作和暂存区的状态,M代表被修改,还没有添加到暂存区,UU代表文件存在冲突
git status -s

# 查看历史记录
git log

# 列出本地分支
git branch
# 创建分支
git branch <branch-name>
# 切换到指定分支
git checkout <branch-name>
# 创建并切换到指定分支
git checkout -b <branch-name>
# 将指定分支合并到当前分支
git merge <branch-name>
# 删除分支
git branch -d <branch-name>
# 上传本地代码并删除远程库分支
git push <name> --delete <branch-name>
# 不管本地与远程库的差异,强制推送
git push <name> <branch-name> --force 

# 拉取远程仓库的最新内容到本地,就是 git fetch 和 git merge 的缩写
git pull
# 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并
git pull origin master:brantest

# 查看当前配置有哪些远程仓库
git remote -v
# 添加一个新的远程仓库
git remote add <name> <url>
# 移除指定名称的远程仓库
git remove rm <name>

# 从远程仓库下载新数据
git fetch <name>
# 同步到本地,一般git fetch后面紧跟git merge
git merge <name>/<branch-name>

# 重置当前分支的HEAD到指定提交
git reset <commit>
# 回退所有内容到上一个版本
git reset HEAD^
# 回退 hello.php 文件的版本到上一个版本
git reset HEAD^ hello.php
# 回退到指定版本
git reset 052e
# 回退上上上一个版本,soft 参数用于回退到某个版本
git reset --soft HEAD~3   
# hard参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
git reset --hard HEAD

# 创建标签来标记当前提交
git tag <tag-name>
git tag -a <tag-name> -m "标签备注"

# 下载特定目录或文件
### 配置
git config core.sparsecheckout true
### 在.git/info/sparse-checkout文件中指定要下载的文件或目录
echo "path/to/directory/" >> .git/info/sparse-checkout
echo "path/to/file" >> .git/info/sparse-checkout
### 下载
git pull origin master
### 或者直接curl或者wget下载