夏天夏 夏天夏
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夏天夏

我也不饶岁月
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • JavaScript

  • CSS

  • 框架

  • Node

  • 服务

  • 其他

    • 编程概念
    • 打包工具
    • 关于前端接口管理的一些思考
    • 开发环境
    • 浏览器兼容问题
    • 前端单元测试
    • 前端资源
    • 实用代码段
    • 书籍
    • 造轮子思路
    • 造轮子思路二
    • 自定义组件
    • ajax
    • git笔记
      • git常用命令
      • 三个很有用的 git 命令。
      • 修改全局用户名和邮箱
      • 查看用户名和地址
      • 修改完后推送上github三步代码
      • 关联远程库
      • 批量修改commit信息
      • 分支管理
      • 三个状态
      • 三个区
      • 参见错误
      • 图形工具
    • iview踩坑记
    • sass
    • webpack原理跟配置
    • Canvas
    • OpenGraph
    • SEO
  • 设计模式

  • web3

  • react

  • 学习笔记
  • 其他
夏天夏
2022-05-15
目录

git笔记

本文整理了Git版本控制系统的常用命令、配置方法和最佳实践。包含了从基础操作到分支管理的完整指南,以及常见问题的解决方案。

# git常用命令

  • ssh-keygen -t rsa -b 4096 -C "919006380@qq.com" #创建ssh钥匙,创建成功最后会出现正方形里面有乱码
  • cd ~/.ssh //查找ssh文件
  • echo “hello” >> a.md //在文件尾部插入一个字符串,一个“>”代表 覆盖。
  • git status //查看仓库当前状态
  • git diff //是工作区(work dict)和暂存区(stage)的比较
  • git diff --cached //是暂存区(stage)和分支(master)的比较
  • git log //显示最近存档commit日志 “--pretty=oneline”参数显示简化版
  • git reset --hard HEAD^ //退回上一个版本 ^^两个^等于上上个版本。
  • git reset --hard 3628164 //切换版本 3628164等于版本号的前几位数字,没必要写全git会自动查找
  • git reflog // 列出你每一次存档的命令,包括前几位数的版本号

git config --global core.quotepath false //解决中文文件名乱码 git config core.ignorecase false git默认对大小写不敏感,会将大写的名称改成小写提交,可配置为对大小写敏感

# 三个很有用的 git 命令。

  • git grep <关键词> :搜索含有关键词的文件。
  • git blame <文件名>:查看指定文件每一行的提交人和提交时间。
  • git log -p <文件名>:查看指定文件的每一次提交和改动。

# 修改全局用户名和邮箱

  • git config --global user.email "919006380@qq.com"
  • git config --global user.name "weibo"

# 查看用户名和地址

git config user.name
git config user.email
1
2

# 修改完后推送上github三步代码

 git add .  // 文件进入暂存区,. 表示添加所有已修改的,-A表示添加所有文件包括删除的
 git commit -am "add" // 存档,实际上就是把暂存区的所有内容提交到当前分支(master)其中
 “ ”内写入的是本次提交的说明,可以是任意内容
 git push   // push到远端GitHub的master上
 
 --------------常用参数说明------------------------------------
 git add -A:`[<path>]` # [<path>]表示把<path>中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。省略<path>表示.,即当前目录。
 git add -i #我们可以通过git add -i 命令查看当前目录中被所有修改过或已删除文件但没有提交的文件,并通过其revert子命令可以查看当前目录中所有untracted的文件,同时进入一个子命令系统。
 git commit -v #查看存档并且添加存档信息
1
2
3
4
5
6
7
8
9

# 关联远程库

  • git remote add origin git@server-name:path/repo-name.git //关联一个远程库
    • git remote add origin git@github.com:qq919006380/WEBdesignPattern.git
    • git remote add origin git@github.com:qq919006380/WEBdesignPattern.git
    • git remote set-url origin git@github.com:qq919006380/WEBdesignPattern.git
  • git remote set-url origin [url] //修改关联一个远程库
  • git remote rm origin //删除关联一个远程库
  • git push origin master// 关联后推送内容
  1. 阮一峰远程操作详解 (opens new window)

# 批量修改commit信息

  1. 修改所有历史提交:
git filter-branch --env-filter '
OLD_EMAIL="旧邮箱地址"
CORRECT_NAME="新用户名"
CORRECT_EMAIL="新邮箱地址"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  1. 修改最近N次提交:
  • 开始交互式rebase: git rebase -i HEAD~N # N是要修改的提交数量
  • 在编辑器中将要修改的提交前的 'pick' 改为 'edit'
  • 对每个提交执行: git commit --amend --author="新用户名 <新邮箱>"
  • 继续rebase过程: git rebase --continue
  1. 推送修改:
git push -f origin main  # 警告:强制推送会覆盖远程历史,请谨慎使用
1
  1. 验证更改:
  • 查看提交历史: git log --pretty=full # 显示完整的作者信息

# 分支管理

  • 查看分支:git branch
  • 查看分支包括隐藏分支:git branch -a
  • 创建分支:git branch <name>
  • 切换分支:git checkout <name>
  • 创建+切换分支:git checkout -b <name>
  • 合并某分支到当前分支:git merge <name>
  • 删除分支:git branch -d <name>
  • 查看分支合并途:git log --graph
  • 查看远程库的信息:git remote
  • 查看远程库详细的信息:git remote -v

# 三个状态

  • 已提交(mommitted)该文件已经被安全地保存在本地数据中了
  • 已修改(modified)修改了某个文件,但还没有提交保存
  • 已缓存(staged)吧已修改的文件放在下次提交时要保存的清单中

# 三个区

  • 工作区(Working Directory) //本机电脑能看的目录文件夹,知识库
  • 版本库(Repository) //工作区有一个隐藏目录.git,这个是版本库
  • 暂存区 //Git的版本库里的stage(或者叫index)的叫暂存区

# 参见错误

ssh: connect to host ssh.github.com port 44: Connection refused
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
1
2
3
4
5

此错误是您网络下的防火墙阻止了某些端口,解决
vim ~/.ssh/config
按i进入编辑模式,复制黏贴以下内容

Host github.com
 Hostname ssh.github.com
 Port 443
1
2
3

之后按Esc退出编辑模式,后输入:wq保存退出
运行命令ssh -T git@github.com以确认问题是否已解决。 参考资料 (opens new window)

需要注意的是有时候执行完上面的命令,问题依然没有解决,最后在我折腾了一个下午之后,发现换一个网络就可以了...之后这个问题再也没有深入研究过了。

过了第好几天之后,发现换了个网也不行了,无奈之下继续排查,发现是github dns污染造成,只需跟换host就可以,具体参考 (opens new window)

# 图形工具

  • sourcetree
  • tortoisegit小乌龟

git讲解视频 (opens new window) 廖雪峰git教程 (opens new window) github慕课视频 (opens new window)

编辑 (opens new window)
#git
上次更新: 2025/01/02, 17:30:52
ajax
iview踩坑记

← ajax iview踩坑记→

最近更新
01
远程办公的个人思考
02-21
02
SEO
01-02
03
NFT的价值
12-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 夏天夏 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式