Skip to content

Git 使用

整理出 Git 常用指令

简易的命令行入门教程

Git 全局设置

sh
git config --global user.name "username"
git config --global user.email "admin@qq.com"

创建一个新仓库

sh
git clone https://gitee.com/远程仓库地址.git
cd electron-vue
git switch --create main
touch README.md
git add README.md
git commit -m "add README"
git push --set-upstream origin main

推送现有文件夹

sh
cd existing_folder
git init --initial-branch=main
git remote add origin https://gitee.com/远程仓库地址.git
git add .
git commit -m "Initial commit"
git push --set-upstream origin main

推送现有的 Git 仓库

sh
cd existing_repo

git remote rename origin old-origin
# or 删除链接
git remote rm origin

git remote add origin https://gitee.com/远程仓库地址.git
git push --set-upstream origin --all
git push --set-upstream origin --tags

文件标识

  • A 增加的文件。
  • C 文件的一个新拷贝。
  • D 删除的一个文件。
  • M 文件的内容或者mode被修改了。
  • R 文件名被修改了。
  • T 文件的类型被修改了。
  • U 文件没有被合并。
  • X 未知状态。

颜色标识

  • 红色 未加入版本控制。
  • 绿色 已经加入版本控制暂未提交。
  • 蓝色 加入版本控制,已提交,有改动。
  • 白色 加入版本控制,已提交,无改动。
  • 灰色 版本控制已忽略文件。

Git提交规范

格式为 type + 冒号 + 空格 + 描述信息

text
type: 描述信息(不超过50个字符)

例子如下:

shell
git commit -m "add: 新增了支付功能"

git commit -m "fix: 修复不能支付bug"

type 是 commit 的类别,只允许如下几种标识

  • fix: 修复bug
  • add: 新功能
  • update: 更新
  • style: 代码格式改变
  • test: 增加测试代码
  • revert: 撤销上一次的commit
  • build: 构建工具或构建过程等的变动,如:gulp 换成了 webpack,webpack 升级等

常用命令

在当前目录初始化一个新的 Git 仓库。

shell
git init

禁用 Git 的自动行结束符LF转为CRLF

bash
git config --global core.autocrlf false

克隆远程仓库到本地。

shell
git clone [url]

将文件添加到暂存区

shell
git add .

提交暂存区的文件到本地仓库。

shell
git commit -m "填写提交信息"

远程操作

shell
git remote -v     # 显示远程仓库的详细信息。
git fetch [remote]     # 从远程仓库拉取最新变更。
git pull [remote] [branch]     # 拉取远程分支并合并到本地分支。
git push [remote] [branch]     # 将本地分支推送到远程仓库。

查看状态和文件差异

shell
git status # 显示工作区和暂存区的状态。
git diff     # 显示文件修改的差异。

分支与合并

shell
git branch     # 列出本地分支,创建或删除分支。
git checkout [branch]     # 切换到指定分支。
git merge [branch]     # 合并指定分支到当前分支。
git rebase [branch]     # 将当前分支变基到指定分支。

撤销与重置

shell
git reset [file]     # 从暂存区撤销文件的更改。
git reset HEAD~1     # 撤销最后一次提交并放入暂存区
git revert [commit]     # 撤销指定提交的更改。
git checkout [file]     # 恢复文件到最近一次提交的状态。

查看历史与日志

shell
git log     # 显示提交日志。
git show [commit]     # 显示某次提交的详细内容。

标签与版本

shell
git tag     # 列出标签。
git tag [name]     # 创建标签。
git tag -d [name]     # 删除标签。

其他命令

shell
git stash     # 暂存当前工作区的修改。
git cherry-pick [commit]     # 选择并应用某个提交的更改。
git clean     # 从工作区中移除未跟踪的文件。
git grep [pattern]     # 在代码库中搜索指定模式。
git bisect     # 用于二分查找引入 bug 的提交。
git archive     # 创建文件归档。
git submodule     # 管理子模块。
git reflog     # 查看引用日志,用于恢复误删除的提交或分支。
git remote add     # 添加一个新的远程仓库。
git remote rm     # 移除一个远程仓库。
git config     # 配置 Git 的各种选项和变量。
git log     # 查看提交日志。
git show     # 查看提交的详细内容。
git diff     # 查看文件更改前后的差异。
git status     # 查看工作区和暂存区的状态。
git add     # 将文件添加到暂存区。
git commit     # 将暂存区的文件提交到本地仓库。
git reset     # 撤销提交或将文件从暂存区移除。
git rm     # 从版本库中删除文件。
git mv     # 移动或重命名文件。
git branch     # 列出、创建或删除分支。
git checkout     # 切换分支或恢复文件。
git merge     # 合并指定分支到当前分支。
git rebase     # 变基操作,将提交应用于另一分支。
git stash     # 暂存当前的工作进度。
git fetch     # 从远程仓库获取代码更新。
git pull     # 拉取远程分支并合并到本地分支。
git push     # 将本地分支推送到远程仓库。
git remote     # 管理远程仓库。
git tag     # 创建、列出或删除标签。
git bisect     # 用二分法查找引入 bug 的提交。
git blame     # 显示每行代码是谁、在什么时间写入的。
git cherry-pick     # 选择并应用某个提交的更改到当前分支。
git bisect     # 用于二分查找引入 bug 的提交。
git grep     # 在代码库中搜索指定模式。
git archive     # 创建文件归档。
git submodule     # 管理子模块。
git reflog     # 查看引用日志,用于恢复误删除的提交或分支。
git stash apply     # 应用之前暂存的工作进度。
git stash pop     # 恢复并删除之前暂存的工作进度。
git stash drop     # 删除之前暂存的工作进度。
git remote show     # 显示某个远程仓库的详细信息。
git remote rename     # 重命名某个远程仓库。
git remote prune     # 清理不再存在的远程分支。
git clean -n     # 显示将要删除的未跟踪文件,但并不删除它们。
git clean -f     # 强制删除工作区中的未跟踪文件。
git clean -df     # 删除未跟踪文件和目录。
git ls-files     # 列出当前版本库中的文件。
git rev-parse     # 显示提交对象的标识符。
git rebase -i     # 执行交互式 rebase 操作,可以合并、修改、删除提交等。
git bisect start     # 启动一个二分查找工具,用于定位引入 bug 的提交。
git bisect bad     # 标记当前提交包含 bug。
git bisect good [commit]     # 标记指定提交为没有 bug。
git bisect reset     # 结束二分查找并重置 HEAD 到原来的状态。
git shortlog     # 根据作者将提交整理成摘要。
git show-branch     # 显示各个分支的提交情况。
git svn     # 与 SVN (Subversion) 仓库进行交互。
git format-patch     # 生成补丁文件。
git apply     # 应用补丁文件。
git am     # 应用补丁并创建提交。
git fsck     # 检查 Git 仓库的完整性。
git gc     # 清理不必要的文件和优化存储。
git instaweb     # 启动图形化界面查看仓库。
git pull --rebase     # 拉取远程分支并执行 rebase 操作。
git push --force     # 强制推送更改到远程仓库。
git blame -L     # 限制 blame 命令只显示某些行的信息。
git checkout -b [branch]     # 创建并切换到新的分支。
git remote add     # 添加一个远程仓库。
git remote rm     # 移除一个远程仓库。
git remote update     # 更新远程仓库引用。
git remote set-url     # 修改远程仓库的 URL 地址。
git remote set-head     # 设置远程仓库的 HEAD。
git svn rebase     # 从 SVN 仓库重新获取数据并应用到当前分支。
git svn dcommit     # 将本地提交推送到 SVN 仓库。
git svn fetch     # 从 SVN 仓库获取数据,但不应用到当前分支。
git svn clone     # 从 SVN 仓库克隆项目。
git svn init     # 初始化 Git 仓库以与 SVN 仓库进行交互。
git svn log     # 查看 SVN 仓库的提交日志。
git svn set-tree     # 设置 SVN 仓库的树。
git svn reset     # 重置 SVN 仓库。
git svn show-ignore     # 显示 SVN 仓库的忽略列表。
git svn info     # 显示 SVN 仓库的信息。
git worktree     # 管理多个工作树。
git bisect visualize     # 可视化二分查找的执行过程。
git reflog expire     # 清理引用日志中过期的记录。
git reflog delete     # 删除引用日志中指定的记录。
git add -p     # 交互式地将部分更改添加到暂存区。
git commit --amend     # 修改最后一次提交。
git rebase --onto     # 在不同的分支间移动提交。
git rebase --abort     # 中止 rebase 操作并恢复到 rebase 开始前的状态。
git rebase --continue     # 继续执行 rebase 操作。
git merge --squash     # 将所有合并的提交压缩成一个提交。
git stash -u     # 包括未跟踪文件和已跟踪文件一起暂存。
git push --all     # 推送所有分支到远程仓库。
git push --tags     # 推送所有标签到远程仓库。
git fetch --prune     # 获取远程仓库的最新变更并清理无效的远程分支。
git diff --submodule     # 显示子模块的 diff 信息。
git notes     # 添加、查看或编辑对象的注释。
git grep --cached     # 在暂存区域搜索。
git ls-tree     # 列出树对象的信息。
git rebase -X     # 使用指定的策略选项执行 rebase 操作。
git shortlog -sn     # 根据提交者的提交数量生成摘要列表。
git show-ref     # 显示引用的信息。
git bundle     # 打包所有的分支和标签成一个文件。
git config [–global]     # 配置 Git 选项。
git rev-parse     # 解析并显示引用的值。
git revert [commit]     # 撤销指定提交的更改。
git cherry-pick [commit]     # 将指定提交应用到当前分支。
git reflog     # 查看引用日志,记录 HEAD 的变更历史。
git bisect visualize     # 可视化二分查找历史。
git bisect replay     # 重演二分查找历史。
git worktree add     # 添加一个新工作树。
git switch     # 切换分支和恢复工作目录更改。
git restore     # 恢复工作目录文件的内容。
git sparse-checkout init     # 初始化稀疏检出以限制仓库大小。
git lfs     # 管理大型文件存储。
git submodule add     # 添加子模块。
git submodule update     # 更新子模块到最新版本。
git submodule sync     # 更新子模块的 URL。
git submodule status     # 显示子模块的状态。
git merge-base     # 找到两个提交的共同祖先。
git merge-base --is-ancestor     # 检查一个提交是否是另一个提交的祖先。
git bundle create     # 创建一个包含指定分支和标签的新文件。
git bundle verify     # 验证捆绑文件的完整性。
git bundle list-heads     # 列出捆绑文件中的头信息。
git bundle unbundle     # 从捆绑文件中提取提交历史记录。
git bundle prune     # 删除不再需要的捆绑文件对象。
git worktree lock     # 锁定工作树,以防止其他操作修改其中的文件。
git worktree unlock     # 解锁先前锁定的工作树。
git worktree remove     # 移除一个已经添加的工作树。
git worktree list     # 列出当前仓库的所有工作树。
git worktree prune     # 删除不再需要的工作树。
git clean     # 清理工作目录中未跟踪的文件。
git blame     # 显示每一行代码是谁最后修改的。
git show     # 显示某个对象的详细信息。
git grep     # 在当前源码中搜索指定模式。
git apply     # 应用补丁到工作目录。
git format-patch     # 生成邮件格式的补丁文件。
git send-email     # 发送邮件包含补丁。
git gc     # 清理不必要的文件和优化本地仓库。

个人收集整理, MIT License