Git 命令大全
创建和克隆仓库
git init: 在当前目录初始化一个新的 Git 仓库。git clone <repository_url>: 克隆远程仓库到本地。
配置
git config --global user.name "Your Name": 配置全局用户名。git config --global user.email "youremail@example.com": 配置全局邮箱地址。git config --global --list: 查看全局配置git config --local --list: 查看本地配置(当前存储库)
增加和提交
git add <file>: 将文件添加到暂存区。git add .: 将所有修改的文件添加到暂存区。git commit -m "Commit message": 提交暂存区的改动到本地仓库。
分支操作
git branch: 显示本地分支列表。git branch <branch_name>: 创建新分支。git checkout <branch_name>: 切换到指定分支。git merge <branch_name>: 合并指定分支到当前分支。git branch -d <branch_name>: 删除本地分支,不能删除当前分支,需要切换分支再删除。git push <remote> --delete <branch_name>: 删除远程分支。git branch -r: 显示远程分支列表。git checkout --orphan <branch_name>: 创建空分支git switch --orphan <branch_name>: 创建空分支(Git 2.23+)
远程操作
git remote -v: 显示远程仓库列表。git remote add <name> <repository_url>: 添加远程仓库。git remote rename <old_name> <new_name>: 修改远程库名称git remote rm <name>: 删除远程库git pull <remote> <branch>: 从远程仓库拉取最新代码。git pull --force <remote> <branch>: 强制拉取远程仓库最新代码,覆盖本地。git push <remote> <branch>: 推送本地分支到远程仓库。git fetch <remote>: 获取远程仓库的最新信息,但不合并。git clone <remote>: 克隆远程仓库到本地。git clone <remote> -b <branch>: 克隆远程仓库中指定的分支到本地。git push <remote> --delete <branch_name>: 删除远程分支。git push <remote_name> <local_branch>:<remote_branch>: 推送到指定分支。
查看状态和历史
git status: 显示工作区和暂存区的状态。git log: 查看提交历史。git log --all: 查看全部提交历史。git log --oneline: 查看简化的提交历史。git log -2: 查看最近两条的提交历史。git tag -l "v*": 显示以 "v" 开头的标签git diff: 查看工作区和暂存区的差异。git diff <commit1> <commit2>: 查看两个提交之间的差异。git reflog: 查看操作历史。
TIP
在使用 git log 命令查看 Git 提交历史时,可以按下 q 键来退出查看状态。
撤销和重置
git reset <file>: 取消对文件的暂存。git reset: 取消对所有文件的暂存。git reset --soft <commit>: 移动 HEAD 指针,不改变暂存区和工作区。git reset --soft HEAD~1: 场景:提交信息写错了,撤销刚刚的提交。git reset --mixed <commit>(默认): 移动 HEAD 指针,并重置暂存区,保留工作区。git reset --hard <commit>: 移动 HEAD 指针,同时重置暂存区和工作区(慎用,此操作不可恢复)。git reset --hard HEAD~1: 移动 HEAD 到最近一次的提交,同时重置暂存区和工作区。git reset --hard HEAD~2: 移动 HEAD 到最近两次的提交,同时重置暂存区和工作区。git checkout <file>: 恢复文件到最近一次提交的状态。
git reset HEAD~1 # 等价于 git reset --mixed HEAD~1标签
git tag <tag_name> [commit_hash]: 创建标签(默认当前分支最新提交)。git tag: 查看所有标签git tag -a <tag_name> -m "Tag message" [commit_hash]: 创建带注释的标签。git push --tags: 推送所有标签到远程仓库。git show <tag_name>: 查看标签信息。git tag -d <tag_name>: 删除标签。git ls-remote --tags <remote>: 列出远程仓库的标签。
切换
git checkout <branch>: 切换到特定分支。git checkout <tag>: 切换到特定标签。git checkout commit_hash: 切换到特定提交git switch <branch> --detach: 切换到特定分支。git switch <tag> --detach: 切换到特定标签。git switch commit_hash --detach: 切换到特定提交
注意
git switch 需要 Git 2.23+
如果切换后使用 git log 看不到之前的提交记录了,加上 --all 参数就行了
其他
git --version: 显示 git 版本。git stash: 暂存当前的工作,将修改保存到一个栈中。git stash pop: 恢复最近一次暂存的工作。git clean -n: 预览并清除工作区的未跟踪文件。git clean -f: 清除工作区的未跟踪文件(慎用)。
命令集
配置默认的推送远程地址
git push --set-upstream <remote> <branch>
此操作会推送一次,<branch> 为本地分支名,一般为当前分支
例如
git push --set-upstream origin main配置默认的拉取远程地址
git branch --set-upstream-to=<remote>/<remote_branch> <branch>
# 例如,将 origin 的 main 分支默认拉取到本地的 main分支
git branch --set-upstream-to=origin/main main开启大小写敏感
# 查看当前项目大小写忽略状态
git config --get core.ignorecase
git config --global --get core.ignorecase
# 开启大小写敏感
git config core.ignorecase false
git config --global core.ignorecase false不跟踪文件权限
linux 上 clone 下来的仓库,可能因为改了权限,导致 git status 显示一堆文件被修改,这个就是因为 git 默认跟踪了文件权限
# filemode=true 表明跟踪了文件权限
cat .git/configgit config core.filemode false创建空白分支
记得在这个分支提交一下,不然使用 git branch 看不到
git checkout --orphan <branch_name>
生成.ssh 秘钥目录
ssh-keygen -t rsa -C "youremail@example.com"
注意:这里-C 这个参数是大写的 C)
取消 git 的版本控制
find . -name ".git" | xargs rm -Rf
此操作将删除以前的提交记录(慎用)
设置默认推送远程
git push --set-upstream <remote-name> <branch-name>
--set-upstream 可以简化为 -u
git push -u <remote-name> <branch-name>
此命令在推送的同时,也会指定的远程和分支设置为默认的推送目标。
设置默认推送分支
git config --global push.default <matching|simple|current|upstream|nothing>
matching: 推送所有本地分支与远程分支同名的分支。simple: 推送当前分支到远程分支,如果远程分支不存在,则创建同名远程分支。current: 推送当前分支到远程分支。upstream: 推送当前分支到上游分支(即通过 git pull 获取的分支)。nothing: 不推送任何分支。
例如,要将当前分支设置为默认推送分支,你可以运行:
git config --global push.default current请注意,如果你使用 --global 标志,这些配置将应用于你系统上所有的 Git 仓库。如果只想在当前仓库中设置默认推送远程和分支,可以省略 --global 标志。
查看当前项目的 Git 配置
要查看当前项目的 Git 配置,你可以使用以下命令
git config --local --list这将显示当前 Git 仓库的本地配置。如果你想查看全局配置(即应用于用户的所有仓库),可以使用:
git config --global --list如果要查看系统级别的配置(适用于整个系统的所有用户和仓库),可以使用:
git config --system --list这些命令会列出所有相关级别上的配置项及其值。如果你只关心特定配置项,你可以使用 grep 命令来筛选结果,例如:
git config --local --list | grep user上述命令将显示所有包含 "user" 的配置项及其值。根据需要,你可以根据不同的配置级别查看相应的配置信息。
TIP
提示:如果配置比较多就会进入分页模式,可以按下 q 键退出分页模式。
参数占位符解释
参数占位符? -> git tag <tag_name> [commit_hash] 的 <tag_name> 和 [commit_hash]
- 必选参数:
<tag_name> - 可选参数:
[commit_hash]
branch_name: 分支名称,用于指定分支的操作。tag_name: 标签名称,用于指定标签的操作。commit_hash: 提交哈希值,用于指定某个提交的操作,方括号表示该参数为可选。file: 文件名,用于指定文件的操作。repository_url: 远程仓库的 URL 地址。remote: 远程仓库的名称,通常为origin。local_branch和remote_branch: 本地分支和远程分支的名称。remote_name: 远程仓库的名称。
关键词
--global: 全局--force: 强制