Appearance
Git 操作命令和区别
初始化和配置
初始化仓库
bash
# 在当前目录初始化 Git 仓库
git init
# 克隆远程仓库
git clone <repository-url>配置命令
bash
# 设置全局用户名
git config --global user.name "Your Name"
# 设置全局邮箱
git config --global user.email "your.email@example.com"
# 查看配置
git config --list
# 查看特定配置
git config user.name文件操作
添加文件到暂存区
bash
# 添加指定文件
git add <file-name>
# 添加所有修改的文件
git add .
# 添加所有文件(包括删除的文件)
git add -A
# 交互式添加
git add -i区别说明:
git add .:只添加当前目录下修改和新建的文件,不包含删除的文件git add -A:添加所有修改、新建和删除的文件git add -u:只添加修改和删除的文件,不包含新建的文件
查看文件状态
bash
# 查看文件状态
git status
# 查看简洁状态
git status -s
# 查看已暂存的文件
git diff --cached
# 查看未暂存的修改
git diff撤销操作
bash
# 撤销工作区的修改(恢复到暂存区或最后一次提交的状态)
git checkout -- <file-name>
# 撤销暂存区的修改(保留工作区修改)
git reset HEAD <file-name>
# 撤销暂存区的修改(丢弃工作区修改)
git reset --hard HEAD <file-name>
# 删除未跟踪的文件
git clean -f
# 删除未跟踪的文件和目录
git clean -fd提交操作
提交更改
bash
# 提交暂存区的更改
git commit -m "commit message"
# 提交所有已跟踪文件的更改(跳过 git add)
git commit -am "commit message"
# 修改最后一次提交
git commit --amend
# 修改最后一次提交的提交信息
git commit --amend -m "new message"区别说明:
git commit -m:只提交暂存区的更改git commit -am:提交所有已跟踪文件的更改,自动添加到暂存区git commit --amend:修改最后一次提交,不创建新的提交
查看历史
查看提交历史
bash
# 查看提交历史
git log
# 查看简洁的提交历史
git log --oneline
# 查看图形化的提交历史
git log --graph --oneline
# 查看指定文件的提交历史
git log <file-name>
# 查看指定作者的提交
git log --author="author-name"
# 查看最近 N 次提交
git log -n查看差异
bash
# 查看工作区和暂存区的差异
git diff
# 查看暂存区和最后一次提交的差异
git diff --cached
# 查看工作区和最后一次提交的差异
git diff HEAD
# 查看两次提交之间的差异
git diff <commit1> <commit2>
# 查看指定文件的差异
git diff <file-name>查看文件内容
bash
# 查看文件在指定提交时的内容
git show <commit>:<file-name>
# 查看指定提交的详细信息
git show <commit>分支操作
创建和切换分支
bash
# 创建新分支
git branch <branch-name>
# 切换到指定分支
git checkout <branch-name>
# 创建并切换到新分支
git checkout -b <branch-name>
# 删除本地分支
git branch -d <branch-name>
# 强制删除分支
git branch -D <branch-name>查看分支
bash
# 查看所有本地分支
git branch
# 查看所有分支(包括远程分支)
git branch -a
# 查看远程分支
git branch -r
# 查看分支的详细信息
git branch -v合并分支
bash
# 合并指定分支到当前分支
git merge <branch-name>
# 合并但不提交
git merge --no-commit <branch-name>
# 终止合并
git merge --abort变基操作
bash
# 将当前分支变基到指定分支
git rebase <branch-name>
# 交互式变基
git rebase -i <commit>
# 继续变基
git rebase --continue
# 跳过当前提交
git rebase --skip
# 终止变基
git rebase --abortmerge 和 rebase 的区别:
git merge:保留完整的历史记录,创建合并提交git rebase:重写历史,创建线性的提交历史
远程操作
远程仓库管理
bash
# 查看远程仓库
git remote
# 查看远程仓库详细信息
git remote -v
# 添加远程仓库
git remote add <name> <url>
# 删除远程仓库
git remote remove <name>
# 修改远程仓库 URL
git remote set-url <name> <new-url>拉取和推送
bash
# 拉取远程仓库的更改
git pull
# 拉取远程仓库的更改并合并
git pull --no-rebase
# 拉取远程仓库的更改并变基
git pull --rebase
# 拉取远程仓库的更改但不合并
git fetch
# 推送本地提交到远程仓库
git push
# 推送指定分支到远程仓库
git push <remote> <branch>
# 推送所有分支
git push --all
# 推送并建立跟踪关系
git push -u <remote> <branch>
# 删除远程分支
git push <remote> --delete <branch>pull 和 fetch 的区别:
git pull:拉取远程更改并自动合并到当前分支git fetch:只拉取远程更改,不进行合并
pull 和 pull --rebase 的区别:
git pull:使用 merge 方式合并git pull --rebase:使用 rebase 方式合并
标签操作
创建标签
bash
# 创建轻量标签
git tag <tag-name>
# 创建附注标签
git tag -a <tag-name> -m "tag message"
# 为指定提交创建标签
git tag <tag-name> <commit>查看标签
bash
# 查看所有标签
git tag
# 查看标签详细信息
git show <tag-name>
# 查看匹配的标签
git tag -l "v1.*"推送标签
bash
# 推送指定标签
git push <remote> <tag-name>
# 推送所有标签
git push --tags
# 删除本地标签
git tag -d <tag-name>
# 删除远程标签
git push <remote> --delete <tag-name>撤销和回退
回退提交
bash
# 软回退(保留工作区和暂存区的修改)
git reset --soft HEAD~n
# 混合回退(保留工作区修改,清空暂存区)
git reset --mixed HEAD~n
# 硬回退(丢弃所有修改)
git reset --hard HEAD~n
# 回退到指定提交
git reset --hard <commit>反向提交
bash
# 创建一个新提交来撤销指定提交的更改
git revert <commit>
# 撤销多个提交
git revert <commit1>..<commit2>reset 和 revert 的区别:
git reset:直接回退到指定提交,会改变历史记录git revert:创建新的提交来撤销更改,保留完整历史
储藏操作
储藏当前工作
bash
# 储藏当前工作
git stash
# 储藏并添加说明
git stash save "message"
# 储藏包括未跟踪的文件
git stash -u
# 储藏所有文件(包括忽略的文件)
git stash -a查看和应用储藏
bash
# 查看储藏列表
git stash list
# 应用最近的储藏
git stash apply
# 应用指定储藏
git stash apply <stash>
# 应用并删除储藏
git stash pop
# 应用指定储藏并删除
git stash pop <stash>
# 删除指定储藏
git stash drop <stash>
# 删除所有储藏
git stash clear其他常用命令
查看和搜索
bash
# 查看文件是谁在什么时候修改的
git blame <file-name>
# 搜索提交历史
git log --grep="keyword"
# 搜索代码内容
git grep "keyword"清理和优化
bash
# 清理未跟踪的文件
git clean -f
# 清理未跟踪的文件和目录
git clean -fd
# 优化仓库
git gc
# 检查仓库完整性
git fsck别名设置
bash
# 设置别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit