Git 常用命令

38 阅读4分钟

这是为你整理的 Git 常用命令,按照使用场景分类,并附上说明。

一、核心基础(必须掌握)

命令说明
git init在当前目录初始化一个新的 Git 仓库
git clone <url>克隆一个远程仓库到本地
git add <file>将文件添加到暂存区(Stage)
git add .将所有修改/新增的文件添加到暂存区
git commit -m "提交说明"将暂存区的内容提交到本地仓库,并附上说明
git status查看工作区和暂存区的状态(哪些文件被修改、新增、删除)
git log查看提交历史记录(按 q 键退出)
git log --oneline查看简洁版的提交历史(一行显示)
git diff查看工作区暂存区的差异
git diff --staged查看暂存区上一次提交的差异
git restore <file>撤销工作区的修改,恢复到上次提交或暂存区的状态
git restore --staged <file>将文件从暂存区移出unstage),但保留工作区的修改
git commit --amend修补上次提交(修改提交信息或将新更改并入上次提交)

基础工作流示意图

工作区 (Working Directory) --`git add`--> 暂存区 (Staging Area) --`git commit`--> 本地仓库 (Repository)

二、分支管理

命令说明
git branch查看所有本地分支(当前分支前有 * 号)
git branch -a查看所有分支(包括远程分支)
git branch <branch-name>创建一个新分支
git checkout <branch-name>切换到指定分支
git checkout -b <branch-name>创建并切换到新分支(常用)
git switch <branch-name>(较新Git版本) 切换到分支(推荐,语义更清晰)
git switch -c <branch-name>(较新Git版本) 创建并切换到新分支
git merge <branch-name>合并指定分支到当前分支
git branch -d <branch-name>删除本地分支(如果已合并)
git branch -D <branch-name>强制删除本地分支(即使未合并)
git log --oneline --graph --all图形化查看分支和合并历史

三、远程操作

命令说明
git remote -v查看远程仓库地址(verbose 详细信息)
git remote add <shortname> <url>添加一个新的远程仓库并命名(通常 origin
git fetch <remote>从远程仓库拉取更新到本地仓库,不自动合并到工作区
git pull <remote> <branch>拉取并合并(=git fetch + git merge
git pull --rebase拉取更新并使用变基方式合并(保持历史线整洁)
git push <remote> <branch>推送本地提交到远程仓库
git push -u <remote> <branch>推送并设置上游分支(第一次推送时使用,后续可只用 git push
git push --forcegit push -f强制推送(会覆盖远程历史,谨慎使用
git push origin --delete <branch>删除远程分支

四、撤销与回退(谨慎操作)

命令说明
git checkout -- <file>(旧命令) 丢弃工作区某个文件的修改(同 git restore <file>
git reset HEAD <file>(旧命令) 将文件从暂存区移出(同 git restore --staged <file>
git reset --soft <commit_id>回退到某个提交,但保留工作区和暂存区的修改
git reset --mixed <commit_id>默认模式,回退到某个提交,保留工作区修改,清空暂存区
git reset --hard <commit_id>彻底回退到某个提交,丢弃所有工作区和暂存区的修改(危险!
git revert <commit_id>新建一个提交来“抵消”指定的提交,用于安全地撤销公共历史

五、其他实用命令

命令说明
git stash储藏当前工作区和暂存区的修改(用于临时切换分支)
git stash pop恢复最近一次储藏的内容并删除储藏记录
git stash list查看所有储藏记录
git stash apply恢复储藏内容,但不删除储藏记录
git tag <tag-name>为当前提交打上轻量标签(常用于版本发布)
git tag -a <tag-name> -m "msg"创建带附注的标签
git show <commit_id>查看某次提交的具体内容更改
.gitignore配置文件,用于指定需要被 Git 忽略的文件/文件夹

六、典型工作流示例

场景:日常开发一个新功能

  1. 更新本地主分支git checkout main && git pull origin main
  2. 创建功能分支git checkout -b feature/awesome-new-feature
  3. 开发代码(多次修改)...
  4. 添加修改到暂存区git add .git add <具体文件>
  5. 提交到本地仓库git commit -m "feat: 添加了xx功能"
  6. 重复第3-5步,直到功能完成。
  7. 推送到远程git push -u origin feature/awesome-new-feature
  8. 在GitHub/GitLab等平台创建Pull Request/Merge Request,请求合并到 main 分支。
  9. 代码审查通过后,在平台上合并分支。
  10. 切回主分支并拉取最新代码git checkout main && git pull
  11. (可选)删除本地功能分支git branch -d feature/awesome-new-feature

重要提示

  • 勤提交:提交粒度小,意义明确。
  • 写清晰的提交信息:这是项目的历史文档。
  • 推送到远程前先拉取:避免冲突。
  • 理解mergerebase的区别merge保留完整历史,rebase创造线性历史。
  • reset --hardpush --force危险操作,在团队协作中慎用。

这是最常用的一部分命令,熟练掌握它们足以应对90%以上的日常开发场景。建议在实际操作中不断练习。