GIT命令使用手册(详细&实用版)

一、git常用操作参考

第一次提交完整步骤:

1.git init;

2.git add .

3.git commit -m "初始化"

4.git remote add origin https://github.com/githubusername/demo.git

5.git pull origin master

6.git push -u origin master(使用-u选项可以将本地的主分支与远程主分支关联起来,这样以后就可以直接使用git push和git pull而不需要指定远程仓库和分支。)
git config --list列出所有的Git配置选项

git config --global user.name "xxxxxxxxxxxxxx"

git config --global user.email "xxxxxxxxxxxxxx"
新增连接的远程仓库:git remote add origin <远程仓库URL>

修改连接的远程仓库:git remote set-url origin <远程仓库URL>

删除连接的远程仓库:git remote remove origin <远程仓库URL>

二、git常用命令参照表

| 序号 | 命令 | 描述 | 样例 |
| 1 | git init | 初始化一个新的Git仓库 | |
| 2 | git clone | 将远程库克隆到本地 | git clone -b <想要克隆的远程仓库的分支名> <远程仓库地址> |
| 3 | git add | 将修改或新增的文件添加到Git暂存区 | |
| 4 | git commit | 将暂存区的文件提交到本地仓库 | |
| 5 | git push | 将本地的分支推送到远程仓库的分支(如果分支不存在则自动创建) 将本地指定分支推送到远程指定分支 | git push <远程仓库名称> <远程仓库分支名称> git push origin <本地指定分支名称>:<远程指定分支名称> |
| 6 | git pull | 将远程仓库的文件拉取到本地仓库 | |
| 7 | git branch | 查看当前本地分支 | |
| 8 | git branch -b | 创建一个新的本地分支 | |
| 9 | git branch -a | 列出所有本地和远程分支 | |
| 10 | git branch -m | 修改本地分支的名称 | git branch -m <旧分支名称> <新分支名称> |
| 11 | git merge | 将两个或多个分支合并到一起 | |
| 12 | git checkout | 切换到另一个分支或者恢复之前的提交 | git checkout <本地分支名称> |
| 13 | git checkout -b | 创建并切换到一个新的本地分支 | git checkout -b <新建本地分支名称> |
| 14 | git cherry-pick | 应用一个提交到当前分支 | git cherry-pick <commit id> |

15 git remote 管理远程仓库
16 git remote -v 显示所有远程仓库的信息
17 git remote set-url 设置或修改远程仓库的URL
18 git remote remove 移除一个远程仓库 git remote rm <仓库名称>
19 git tag 创建、列出或删除标签
20 git cz 使用commitzen这样的工具,它提供了交互式的提交信息输入方式,有助于生成格式化良好的提交消息
21 git status 显示当前分支的文件状态,包括未跟踪文件、未提交的更改和冲突
22 git diff 显示暂存区和工作目录之间的差异
23 git log 显示提交日志,包括提交历史和每次提交的详细信息
24 git reset 重置当前分支到指定的状态,可以是到某个提交、某个标签或某个commit的哈希值
25 git revert 创建一个新的提交,这个提交的内容是撤销某个指定提交的更改
26 git branch -d/-D 删除一个分支,-D选项用于强制删除(即当分支有未合并的提交时)
27 git checkout -- <file> 丢弃工作目录中指定文件的所有本地更改
28 git rm 从工作目录和暂存区中删除文件
29 git mv 重命名文件,同时更新工作目录和暂存区
30 git show 显示某个提交的详细信息,包括提交的日志、差异和文件内容
31 git stash 保存当前的工作状态到一个栈,然后清空工作目录和暂存区
32 git stash apply 应用以前保存的工作状态
33 git stash list 列出所有保存的工作状态
34 git stash pop 应用并移除最近保存的工作状态
35 git bisect 帮助我们找到引入错误的提交
36 git grep 在提交历史或当前分支中搜索文本
37 git gc 执行垃圾回收,清理不再使用的对象
38 git reflog 显示对引用(分支、标签等)所做的所有更改的历史记录
39 git fetch 拉取最新的代码和分支信息,将远程分支拉取到本地新建的分支 git fetch <远程仓库名称> <远程分支名称>:<本地分支名称>

三、常见问题及解决方案:

问题一:拉取报错

$ git pull origin master
From gitee.com:loris-liu/ncn
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

本地仓库和远程仓库是独立的,它们没有共同的提交历史。你的本地分支是新创建的,并且没有提交历史。

在命令后面使用 --allow-unrelated-histories 标志来允许合并不相关的历史。

问题二:历史提交中单个文件过大解决

// 第一步查到该文件:
git rev-list --objects --all | grep 438f2335a16ab8239d709089b8463d2069a1
// 或者:
git rev-list --all | xargs -I{} git ls-tree --full-tree -r {} | grep 438f2335a16ab8239d709089b8463d2069a17637
// 第二步重写:
git filter-repo --path screen.zip --path-rename '' --invert-paths
// 或者:
git filter-branch --tree-filter 'rm -f screen.zip' HEAD 

问题三:撤销上一次合并

1.回滚到之前的提交

第一步:使用 git reflog 查看历史记录,找到合并操作之前的提交哈希值:git reflog

找到您想要回滚到的提交前的提交哈希值。

第二步:git reset 命令回滚到之前的提交:git reset --hard <commit-hash>

2.撤销最近的合并操作
git reset --hard ORIG_HEAD

将当前分支回退到最近的一次提交,并清除工作目录和暂存区中的所有本地修改,让你的工作区变得和最近的提交完全一样

解释:git reset --hard HEAD

// git reset 是用来移动当前分支的 HEAD 指针的命令。

// --hard 选项表示彻底重置。它会重置工作目录和暂存区,丢弃所有未提交的更改。

// HEAD 是指向当前分支最新提交的指针。

3.撤销上一次commit
git reset --soft HEAD^
4.完全撤销上一次commit
git reset --hard HEAD^

问题四:仓库clone优化(只克隆最新的一个提交)

git clone --depth=1 <远程仓库地址>

--depth=1: 这是一个选项,表示只克隆最新的一个提交。这样可以减少克隆所需的时间和空间,因为你只获取最新的提交历史,而不是整个历史记录。

问题五:测试是否连通 ssh -T git@github.com

第一种方法:关闭SSl验证:
git config --global http.sslVerify "false"
git config --global https.sslVerify "false"

第二种方法:关闭全局代理:
git config --global --unset http.proxy
git config --global --unset https.proxy

PS:连接github超时可查看一下博文:

解决GitHub总是超时连接不上的问题_github超时-CSDN博客

问题六:使用一次新的commit,替代上一次提交

git commit --amend -m [message]

如果代码没有任何新变化,则用来改写上一次commit的提交信息

问题七:撤销git cherry-pick操作

git cherry-pick --abort

问题八:查看代码贡献量

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --format='%aN' --since="2023-01-01" --until="2023-12-31" --numstat | awk '{add += $1; subs += $2; loc += $1 - $2} END {print add, subs, loc}'; done

这个命令会输出自2023年1月1日至2023年12月31日期间每个贡献者的添加(additions)、删除(deletions)和总行数(loc)。

解释:

git log --format='%aN' 列出提交的作者姓名。

sort -u 对作者姓名进行排序并去重。

while read name; do ... done 循环遍历每个作者姓名。

echo -en "$name\t" 输出作者姓名,并添加一个制表符进行对齐。

git log --author="$name" 筛选出指定作者的提交。

--since 和 --until 参数限定时间范围。

--numstat 选项使得git log输出每个文件的添加和删除行数。

awk 用于累加每个作者的代码行数统计。

相关推荐
樊南2 小时前
【esp32-uniapp小程序】uniapp小程序篇02——Hbuilder利用git连接远程仓库
git·小程序·gitee·uni-app·hbuilder·torisegit
王景程9 小时前
GitHub的主要用途及核心功能
git·github
Мартин.14 小时前
[Meachines] [Easy] LinkVortex Git leakage+Ghost 5.58+Double Link Bypass权限提升
git
甜到心里的蛋糕16 小时前
github汉化
git·github
可涵不会debug20 小时前
【C++】在线五子棋对战项目网页版
linux·服务器·网络·c++·git
Amy_cx1 天前
卸载和安装Git小乌龟、git基本命令
git
铃响十分1 天前
make/Makefile、进度条、git
git
念九_ysl1 天前
git操作
git
画船听雨眠aa1 天前
git的安装
git
bing_1581 天前
Git常用命令
git