Git 常用命令
1. 新建一个仓库
1.1 新建一个普通仓库
git init
1.2 新建一个裸仓库
git init --bare
指定新建裸仓库名称:
git init --bare <仓库名>
2. 提交与撤销
2.1 查看状态
git status
2.2 添加文件到暂存区
git add <文件> # 添加指定文件
git add . # 添加所有变更
git add -A # 添加所有变更(包括删除)
2.3 提交
git commit -m "提交信息"
2.4 修改最近一次提交
git commit --amend -m "新提交信息" # 修改提交信息
git commit --amend --no-edit # 追加变更到上次提交(不修改信息)
2.5 撤销
git restore <文件> # 撤销工作区修改(未暂存)
git restore --staged <文件> # 从暂存区移回工作区
git reset --soft HEAD~1 # 撤销最近一次提交,保留到暂存区
git reset --mixed HEAD~1 # 撤销最近一次提交,保留到工作区
git reset --hard HEAD~1 # 彻底撤销最近一次提交(危险!)
git revert <commit-hash> # 创建反向提交来撤销(安全,适合已推送的提交)
3. 分支管理
3.1 查看分支
git branch # 本地分支(当前分支前置 *)
git branch -r # 远程分支
git branch -a # 所有分支(本地 + 远程)
git branch -vv # 查看跟踪关系
3.2 创建与切换分支
git branch <分支名> # 创建分支
git switch <分支名> # 切换分支(推荐)
git switch -c <分支名> # 创建并切换(推荐)
git checkout -b <分支名> # 创建并切换(旧式)
3.3 合并分支
git merge <分支名> # 合并指定分支到当前分支
git merge --no-ff <分支名> # 强制保留分支历史(非快进)
git merge --abort # 中止合并(解决冲突时用)
3.4 删除分支
git branch -d <分支名> # 删除已合并的本地分支
git branch -D <分支名> # 强制删除未合并的本地分支
3.5 重命名分支
git branch -m <新名称> # 重命名当前分支
git branch -m <旧名称> <新名称> # 重命名指定分支
4. 远程仓库
4.1 查看远程仓库
git remote # 列出远程名称
git remote -v # 显示远程名称和 URL
git remote show <远程名> # 查看远程详细信息
4.2 添加远程仓库
git remote add <远程名> <URL>
# 例如:
git remote add origin git@github.com:user/repo.git
4.3 修改远程仓库地址
git remote set-url <远程名> <新URL>
4.4 删除远程仓库
git remote remove <远程名>
5. 推送与拉取
5.1 推送
git push <远程名> <分支名> # 推送到远程
git push -u <远程名> <分支名> # 推送并设置上游跟踪(下次可直接 git push)
git push --all <远程名> # 推送所有本地分支
git push --tags # 推送所有标签
git push <远程名> --delete <分支名> # 删除远程分支
git push --force-with-lease # 安全强制推送(比 --force 好)
5.2 拉取
git pull <远程名> <分支名> # 拉取并合并(fetch + merge)
git pull --rebase # 拉取并用变基代替合并
git fetch <远程名> # 仅下载远程内容,不合并
git fetch --all # 获取所有远程更新
git fetch --prune # 获取并清理已删除的远程分支引用
5.3 克隆远程仓库
git clone <URL> # 克隆到本地
git clone --depth 1 <URL> # 浅克隆(只取最新提交,省空间)
git clone --branch <分支名> <URL> # 克隆并切换到指定分支
6. 查看历史
git log # 查看提交历史
git log --oneline # 单行简洁模式
git log --graph # 图形化分支
git log --oneline --graph --all # 所有分支的图形历史
git diff # 工作区与暂存区的差异
git diff --staged # 暂存区与上次提交的差异
7. 暂存临时修改
git stash # 临时保存工作区修改
git stash pop # 恢复最近的 stash 并删除
git stash list # 查看所有 stash
git stash apply # 恢复最近的 stash 但不删除
8. 标签管理
git tag # 列出所有标签
git tag <标签名> # 创建轻量标签
git tag -a <标签名> -m "信息" # 创建附注标签
git push origin <标签名> # 推送指定标签