Git 参考手册
提交和推送
修改最后一次提交的信息
bash
git commit --amendgit 会在终端打开一个编辑器,编辑里面的提交内容,保存并退出即可。
如果需要推送到远程,执行:
bash
git push --force强制推送到远程,因为已经修改了提交信息。
分支
创建分支
bash
git branch newBranch删除分支
删除本地分支:
bash
git branch -d 分支名 # 仅适用于已合并的分支
git branch -D 分支名 # 强制删除(即使未合并)删除远程分支:
bash
git push origin --delete 分支名临时切换分支
当在当前分支上修改了一些内容,但不需要即时提交时,又需要切换到其他分支查看内容等,需要:
先暂存当前分支的修改:
bashgit stashgit stash只会暂存已被追踪的文件,将其放入暂存区,但未被追踪的文件不会处理,因此如果修改的文件中还有未被 git 追踪的文件,需要执行:bashgit stash -u # --include-untracked将未被追踪的文件也放入暂存区。
切换到另一个分支:
bashgit switch other-branch完成后切换回原始分支,然后执行:
bashgit stash pop恢复暂存的更改。
错误处理:
如果在切换回原本分支准备
pop时,切换的分支错误了,即原分支为 A,但切换到了 B 并执行了pop,在没有进行其他的操作下,再次将文件放回暂存区,使用git stash -u,然后切换到正确的分支 A,再次执行pop即可。
远程仓库
查看绑定的远程仓库
bash
git remote -v修改绑定的远程仓库
bash
git remote set-url origin <新远程仓库URL>删除远程仓库
bash
git remote remove origin查看邮箱和用户名
全局:
bash
git config --global user.name
git config --global user.email当前项目:
bash
git config user.name
git config user.email修改邮箱和用户名
全局:
bash
git config --global user.name "Your Global Name"
git config --global user.email "your-global-email@example.com"当前项目:
bash
git config user.name "Your Local Name"
git config user.email "your-local-email@example.com"SSH 密钥对
机器和 git 仓库账号中需要有公私钥配对,需要在本地机器上生成密钥对,然后将公钥内容添加到账户中。
在本地机器生成密钥对:
bash
ssh-keygen -t rsa -b 4096 -C "935460098@qq.com"这回生成 id_rsa 和 id_rsa.pub 文件,其中 id_rsa.pub 是公钥,将其复制到账户下。
查看公钥内容:
bash
cat ~/.ssh/id_rsa.pub代理
使用代理克隆
临时设置:
在 git clone 命令之前,临时设置 HTTP 和 HTTPS 代理。例如使用 7897 端口代理:
bash
git -c http.proxy=http://127.0.0.1:7897 -c https.proxy=http://127.0.0.1:7897 clone --recurse-submodules https://github.com/mikel-brostrom/Yolov7_StrongSORT_OSNet.git永久设置:
如果你希望在所有 Git 操作中都使用该代理,可以配置 Git 的全局代理:
bash
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890这样,你的所有 Git 操作都会自动通过该代理。若要取消代理设置:
bash
git config --global --unset http.proxy
git config --global --unset https.proxy其他指令
查看仓库大小
一般情况下,可以直接到网页端的仓库管理界面查询到仓库的信息,包含仓库大小,如果无法查到仓库大小,可以将仓库克隆到本地,然后运行:
bash
git count-objects -vH查看仓库大小。
输出形式:
count: 123
size: 1.23 MiB
in-pack: 0
packs: 0
size-pack: 0 bytes
prune-packable: 0
garbage: 0
size-garbage: 0 bytes