git常用命令

其他参考

A. 入门内容

git config

在git中,使用git config 命令来配置 git 的配置文件,git配置级别主要有3类:

  • 仓库级别 local 本地 Git 仓库级别配置文件,作用于当前仓库。【优先级最高】
  • 用户级别 global,全局配置文件,作用于所有用户。【优先级次之】
  • 系统级别 system,作用于系统所有用户和所有库。【优先级最低】

git config -l查看所有的配置信息,依次是系统级别、用户级别、仓库级别
git config —local -l 查看仓库配置
git config —global -l 查看用户配置
git config —system -l 查看系统配置
git config 添加配置文件
git config —global user.email “You Email”
git config —global user.name “Your Name”
git config -e 编辑配置文件
git config —local -e 编辑仓库级别配置文件
git config —global -e 编辑用户级别配置文件
git config —system -e 编辑系统级别配置文件
编辑会打开一个 Vim 编辑器,很多人可能不会用。
打开 Vim 编辑器后,键盘按下字母 O 键开始编辑
保存并退出编辑 Esc ——> :wq
退出编辑 Esc ——> :q
强制退出编辑 Esc ——> :q!

git clone

git clone 拉取仓库到新的目录
git clone \
git clone -b \ \ 拉取repo的某个分支,到该目录下
git clone —recursive \ 拉取repo分支,并递归提取其submodule
git submodule update —init —recursive 提取并初始化submodule(如果没有git clone —recursive可以这么补救,参考链接
git clone \ \ 拉取repo分支,到local path目录下(不存在则自动创建该目录)

git fetch

git fetch 创建并更新本地远程分支
git fetch origin 手动指定要 fetch 的 remote,在不指定分支时通常默认为 master;
git fetch origin master:temp 如在本地新建一个temp分支,并将远程 origin 仓库的master 分支代码下载到本地 temp 分支
git diff temp 比较本地代码与刚刚从远程下载下来的代码的区别
git merge temp 合并代码
git branch -d temp 不想要 tmp 分支,删除分支

git pull

git pull 将更新从远程仓库合并到当前分支。在默认模式下,git pull == git fetch + git merge。
git pull <远程主机名> <远程分支名>:<本地分支名>
如 git pull origin master
git pull 取回远程仓库某个分支的更新,再与本地的指定分支自动合并,可能会出现代码冲突。
git fetch 先获取远程仓库某个分支的更新,再执行 merge,相比 pull ,fetch 更可控。
git add

git add -A 添加所有文件到暂存区
git add -u 添加被修改(modified)和被删除(deleted)文件到暂存区,不包括新文件(new)
git add . 添加新文件(new)和被修改(modified)文件到暂存区,不包括被删除(deleted)文件
可以通过 git status 检查文件是否已添加完毕。

git commit

git commit -m “” 比较常见的用法,-m “填写更新记录”
git commit -a -m “” 提交所有已跟踪的执行修改或删除、新建的文件,即使没有执行 git add 添加到暂存区的文件。
git commit —amend 追加提交,可以在不增加新的 commit-id 的情况下将新修改的代码追加到前一次 commit-id 中。如不小心提交了一版没有修改完成的版本上去,还需要修改完善后再提交,又不想再次增加一个 commit-id 时,可以使用追加提交。
git commit —help 查看帮助

git push

git push 将已经 commit 的文件推送到远程仓库的分支
git push origin master 推送到 master 分支
git push —all origin 推送本地仓库所有分支到远程仓库分支
git push origin :master 删除远程分支,等同于 git push origin —delete master
git push -u origin master 将本地的 master 分支推送到 origin 主机,同时指定 origin 为默认主机。

git remote

git remote -v 查看远程仓库地址
git remote set-url origin 修改远程仓库地址
git remote rm origin 删除远程仓库地址
git remote add origin [url] 添加远程仓库地址

git merge

git merge 合并代码
git merge —no-commit 防止合并失败不自动提交
git merge —no-ff 不使用fast-forward方式合并,创建一个 merge 的 commit 信息。

git count-objects

git count-objects -v -H 查看仓库大小(以MB为单位)
git count-objects -v 查看仓库大小(以字节为单位)

git filter-branch:https://www.php.cn/manual/view/34955.html

B.博客与解决方案汇总

彻底删除不用的大文件

gitignore

修改commit

一、commit到本地版本库

  1. 命令行执行:git commit --amendgit commit –amend既可以对上次提交的内容进行修改,也可以修改提交说明
  2. 利用vim语法,点击i进入编辑模式,修改对应文本内容
  3. 点击Esc退出编辑模式
  4. 按键:wq强制退出

二、修改以往n次提交的信息

  1. 使用git rebase -i HEAD~n命令 n是以往第n次的提交记录,这里是修改以往第二次的记录,所以n=2,最终命令是git rebase -i HEAD~2
  2. 你想修改哪条注释 就把哪条注释前面的pick换成edit。方法就是上面说的编辑方式:i—-编辑,把pick换成edit—-Esc—-:wq.
  3. 退出来之后,执行git commit --amend命令
  4. 然后wq退出来之后,记得执行git rebase --continue
  5. 如果修改远程的提交信息。首先,你把最新的版本从远程仓库先pull下来,修改的方法都如上,最后修改完成后,强制push到远程仓库:git push --force强制提交之前,注意检查你的代码是否最新的,否则很有可能覆盖了同事的代码!

三、push到远程之后

  1. git log获取历史提交信息
  2. git rebase -i HEAD~6,这里的6是指展示最近6次push
  3. 找到需要修改添加提交信息的push,将其最前面的pick 修改为edit, 然后执行按ESC退出编辑,再执行 :wq 退出
    • pick:

image-20220507175715967

  1. 后续我们会看到这样的提示信息:

img

  1. 执行git commit --amend,按照commit到本地版本库的方式修改即可
  2. git rebase --continue
  3. push到远程:git push origin <your branch nama> -f

Git历史版本查看(log)和前进后退(reset)

https://zhuanlan.zhihu.com/p/195543519

C.远程仓库相关

git remote -v 查看远程仓库
git push —all origin 推送所有分支到远程仓库
git push每次都要输入密码,应该是没有设置为ssh,参考下图

git远程仓库修改与删除:https://blog.csdn.net/qq_29232943/article/details/104637674

解决办法

git报错fatal: unable to access \’‘: OpenSSL SSL_read: Connection was reset

bug描述:

fatal: unable to access ‘https://github.com/…’: OpenSSL SSL_read: Connection was reset, errno 10054

bug产生原因:

一般是这是因为服务器的SSL证书没有经过第三方机构的签署,所以才报错

bug 解决方法:

参考网上解决办法:解除ssl验证后,再次git即可

1
git config --global http.sslVerify false

draw_bed_token:

1
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