记录工作中鲜少记得的git操作

前言

关于git,我很多时候使用的是小乌龟。所谓工欲善其事必先利其器,一个好的工具,会使工作效率事半功倍。但是工具再好,从事it这行,终究是知其然并知其所以然,否则永远只是个技术搬运工。想清楚之后,就有意识的看看git book,学习并使用git命令,工作中也记录一些命令。以下是工作中比较常用但又比较冷门的git命令

git日志导出

这个常用于写工作周报的时候,我一般很难清晰的记得一周干了啥,所以每次都需要去看git日志。后来仔细想了下,应该有个命令可以直接导出git日志,所以就去git book上面找了下。

  • --no-merges:忽略分支合并日志
  • --reverse:按照时间升序排序
  • --since:几天前,或者日志开始时间(6天前)
  • --committer:提交者(author)
  • 一般执行之后,就会在根目录中生成gitlog.txt文件
  • 如果gitlog.txt 已存在,会覆盖里面内容
shell 复制代码
git log --pretty=format:"%s" --since="6 days ago"   --committer="author" --no-merges --reverse > gitlog.txt

不想覆盖使用>>

shell 复制代码
git log --pretty=format:"%s" --since="6 days ago"   --committer="author" --no-merges --reverse >> gitlog.txt

git日志,根据特定格式导出,这个我不怎么常用,但是用到过,所以记录以下

shell 复制代码
git log --committer="author" --after="2023-3-1" --before="2023-5-1" --pretty=format:"%an %ad : %s" --date=short --no-merges --reverse

以上是导出2023-03-01------2023-05-01之前的git日志,用【提交者 修订日期:提交说明】的方式

git log --pretty=format 常用的选项

选项 说明
%H 提交的完整哈希值
%h 提交的简写哈希值
%T 树的完整哈希值
%t 树的简写哈希值
%P 父提交的完整哈希值
%p 父提交的简写哈希值
%an 作者名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date=选项 来定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期(距今多长时间)
%s 提交说明

合并posture的某次提交到dev分支上

很多时候需要合并提交,但是又不需要合并所有提交,所以就不能使用git pullgit merge origin/xxxgit push。于是我有借助了度娘和git book的知识库,主要是获取commit id,然后git cherry-pick commit-id

shell 复制代码
# 切换到posture分支上
git checkout posture

# 查看日志
git log

查询到需要合并分支的commit id: 13f9ee9c3437ba12f078afd8ff30d5335d863889

复制后面那串sha-1码(13f9ee9c3437ba12f078afd8ff30d5335d863889)

shell 复制代码
# 切换到dev分支
git checkout dev

# 先拉取信息,更新到最新信息
git pull

# 合并某次提交
git cherry-pick 13f9ee9c3437ba12f078afd8ff30d5335d863889

# 推送到远端
git push origin dev

题外之话

之前也踩过坑,当我想要合并某个分支的时候,发现push没有成功,最后还是很合并了所有代码。所以还是要注意看git的报错信息,和看下merge、push是否成功。

基于dev分支创建test分支

当前分支dev

主要是基于本地dev的代码创建test分支

shell 复制代码
git checkout -b test

git push origin test

# 跟远程关联
git branch --set-upstream-to=origin/test test

# 合并本地dev
git merge dev

# 查看缓存
git ls-files -c

# 推送到远程
git push

删除分支及远程分支

注意:不能在当前的分支上,需要切换到别的分支上

删除分支localBranchName

shell 复制代码
# 删除本地分支
git branch -d localBranchName

# 删除远程分支
git push origin --delete remoteBranchName

重命名分支

1.5-timezone重命名为1.5-utcoffset

shell 复制代码
# 切换到1.5-timezone分支
git checkout 1.5-timezone

# 重命名本地分支
git branch -m 1.5-utcoffset

# 删除远程分支
git push origin --delete 1.5-timezone

# 将上游分支重置为新本地分支的名称
git push origin -u 1.5-utcoffset

# 查看分支及对应的远程分支
git branch -vv

取消代理

shell 复制代码
# 查看代理
git config --global http.proxy

# 取消代理
git config --global --unset http.proxy

https同理

一般开了vpn之后很容易报这个错,用以上方法可解决

fatal: unable to access 'http://175.6.134.2:9080/guoliang/vsocweb.git/': Failed to connect to 127.0.0.1 port 7890 after 2069 ms: Couldn't connect to server

其他命令

查看分支当前状态

shell 复制代码
git status

从以上输出信息可以看出:有两个文件被修改了,一个文件新增(yarn.lock

添加文件

  • 添加特定文件是add后面跟具体文件名,如git add main.js,获取是一类文件等等,同理
  • 添加所有文件是使用git add *

以下命令是添加所有文件

shell 复制代码
git add *

查看分支

这个一般都很常用,虽然没有git pullgit push那么常见,但是俗话说我可以不用,但是不能不知道。git branch-的命令很多,但是我一般常用的就这几种,以下用表格的形式记录下

命令 说明
git branch 查看本地分支数
git branch -a 查看本地及远程分支
git branch -v 与git barnch同理,查看本地分支
git branch -vv 查看本地及与之对应的远程分支

还有一个就是创建分支的时候比较常用的--创建并切换到该分支上:git checkout -b xxx

git clone 报错

这个踩坑较少,但是有点子费时我又刚好有点子兴趣,所以记录下子

git clone报错RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)

shell 复制代码
git config --global http.version HTTP/1.1

参考链接:stackoverflow.com/questions/5...

然后又报了error:RPC failed; curl 18 transfer closed with outstanding read data remaining

后面上网查,竟然是因为网慢

这种情况经常发生,我的互联网连接速度很慢,我必须克隆一个相当大的 git 存储库。最常见的问题是连接关闭并且整个克隆被取消。

Cloning into 'large-repository'...

remote: Counting objects: 20248, done.

remote: Compressing objects: 100% (10204/10204), done.

error: RPC failed; curl 18 transfer closed with outstanding read data remaining

fatal: The remote end hung up unexpectedly

fatal: early EOF

fatal: index-pack failed

经过大量的尝试和错误以及大量的"远程端意外挂断"之后,我找到了一种适合我的方法。这个想法是首先进行浅层克隆,然后用其历史记录更新存储库。

shell 复制代码
$ git clone <http://github.com/large-repository> --depth 1

$ cd large-repository

$ git fetch --unshallow

成功了成功了

参考链接:stackoverflow.com/questions/3...

相关推荐
数字化顾问6 小时前
GitHub热榜项目 - 日榜之应用场景与未来发展趋势
github
全栈工程师修炼指南7 小时前
告别手动构建!Jenkins 与 Gitlab 完美协作,根据参数自动化触发CI/CD流水线实践
运维·ci/cd·自动化·gitlab·jenkins
CoderJia程序员甲8 小时前
GitHub 热榜项目 - 日榜(2025-09-13)
ai·开源·大模型·github·ai教程
nightunderblackcat9 小时前
新手向:Git下载全攻略
git
逛逛GitHub10 小时前
1 个神级智能问数工具,刚开源就 1500 Star 了。
sql·github
梦想CAD控件11 小时前
(在线CAD平台)网页集成CAD SDK的方法
前端·javascript·github
若无_13 小时前
了解 .husky:前端项目中的 Git Hooks 工具
前端·git
想当花匠的小码农13 小时前
Git 仓库“减肥”指南:从检测、清理到同步的全流程实践
git
杨杨杨大侠14 小时前
Atlas Mapper 教程系列 (4/10):高级映射技巧与类型转换
java·开源·github
杨杨杨大侠14 小时前
Atlas Mapper 教程系列 (3/10):核心注解详解与基础映射
java·开源·github