hello-git

最近在搭博客过程中经常用到git,把之前学习git的内容再复习一下

Git是一种开源的分布式版本控制系统,主要用于跟踪和管理源代码的更改。它由Linus Torvalds在2005年开发,最初是为了支持Linux内核开发。Git的设计目标是高效处理大规模项目,同时能够保持速度和数据完整性。以下是对Git的一些关键特性的介绍:

1. 分布式版本控制

Git与集中式版本控制系统(如SVN、CVS)不同,它是分布式的。这意味着每个开发者的工作目录都是一个完整的代码仓库,包括所有的历史版本记录。这种设计使得Git具有以下优势:

  • 离线工作能力:开发者可以在本地进行提交、创建分支等操作,即使没有网络连接。
  • 备份和恢复:由于每个克隆的仓库都包含完整的历史记录,数据的冗余性提高了可靠性。

2. 强大的分支模型

Git的分支(branch)管理非常轻量且灵活,允许开发者快速创建、合并和删除分支。常见的分支策略包括:

  • 功能分支(Feature Branch):每个新功能都在一个独立的分支上开发,完成后再合并到主分支。
  • 修复分支(Hotfix Branch):用于紧急修复生产环境中的问题。
  • 发布分支(Release Branch):在发布新版本前进行的最后调试和修复工作。

3. 高效的合并和冲突解决

Git使用三方合并(Three-way Merge)算法,可以高效地合并不同分支的代码变更。即使在多人协作中出现冲突,Git也提供了丰富的工具来帮助解决冲突,例如:

  • 命令行工具:如git mergegit rebase
  • 图形化工具:如GitKraken、Sourcetree等。

4. 提交和历史记录

每次提交(commit)都包含一组文件的快照及其元数据,如作者、时间戳和提交信息。提交记录可以通过哈希值唯一标识。常用的历史记录命令包括:

  • git log:查看提交历史。
  • git diff:比较文件差异。
  • git blame:查看每行代码的最后修改记录。

5. 分布式协作

Git支持多种协作方式,如通过GitHub、GitLab等平台进行代码托管和协作。开发者可以通过克隆(clone)、拉取(pull)和推送(push)来同步代码变化。此外,Pull Request(合并请求)和Code Review(代码审查)功能进一步增强了协作的效率和代码质量。

基本命令

以下是一些常用的Git命令及其简要说明:

  • git init:初始化一个新的Git仓库。
  • git clone [url]:克隆一个远程仓库到本地。
  • git add [file]:将文件的更改添加到暂存区。
  • git commit -m "message":提交暂存区的内容。
  • git status:查看当前工作目录的状态。
  • git push:将本地提交推送到远程仓库。
  • git pull:从远程仓库拉取并合并更新。
  • git branch:列出、创建或删除分支。
  • git checkout [branch]:切换到指定分支。

Git实践

  • 创建了本地版本仓库并将文件提交到本地仓库 常用操作
    1、mkdir 创建一个文件夹
    2、cd 进入该目录
    3、pwd 显示该目录路径
    4、git init 将创建的文件夹 变成一个本地仓库
    5、git add 文件名
    6、git commit -m “这里通常对提交的文件做一个简单的说明”
    7、git status 随时掌握工作去的状态
    8、git diff 查看修改内容
    9、git log 查看历史记录
    10、git log –pretty=oneline 查看历史记录(带过滤)
    11、git reflog 用来记录每一次的命令
    12、git reset –hard commit_id 返回到历史版本
    13、cat 文件名 查看文件内容
    14、git checkout – 文件名 实质是用版本库里面的文件版本替换工作去的版本
    15、git rm 文件名 删除文件 直接用rm命令或者在工作区中删除会造成版本库和工作区中文件不一致

  • 远程托管
    16、git remote add origin ssh地址(ssh地址为github上创建的仓库时生成的)
    17、git push -u origin master 第一次把当前分支master的所有内容推送到远程
    18、git push origin master 非首次推送
    19、git clone ssh地址 从远程库克隆 git remote -v 查看远程库信息

  • 分支管理
    20、git branch 查看分支
    21、git branch branch_name 创建分支( branch_name为自定义的分支名称)
    22、git checkout branch_name 切换分支
    23、git checkout -b branch_name 创建并切换分支
    24、git merge branch_name 合并某分支到当前分支
    25、git branch -d branch_name 删除分支
    26、git log –graph 查看分支合并图
    27、git merge –no-ff branch_name 普通模式下的合并,合并后的历史有分支,能看出来曾经做过合并
    28、git stash 把当前工作现场“隐藏”
    29、git stash list 查看隐藏的工作现场
    30、git stash apply 恢复工作现场,但是恢复后,stash内容并不删除,需要git stash drop 删除
    31、git stash pop 恢复工作现场的同时,stash内容也被删除
    32、git branch -D branch_name 强行丢弃一个没有被合并过的分支

  • 创建标签
    33、git tag tag_name 创建一个标签,默认为HEAD,也可以指定一个commit id
    34、git tag -a tag_name -m “此处指定标签信息”
    35、git tag -s tag_name -m “此处用PGP签名标签”
    36、git tag 查看所有标签
    37、git show tag_name 查看标签信息

  • 操作标签
    38、git tag -d tag_name 删除一个本地标签
    39、git push origin tag_name 推送某个标签到本地
    40、git push origin –tags 推送全部未推送过的本地标签
    41、git push origin : refs/tags/tag_name 删除一个远程标签

  • 自定义git
    42、git config –global color.ui true
    43、git config –global alias.st status 设置status的别名为st
    44、git config –global alias.last ‘log -1’ 配置了一个git last,显示最后一次提交信息

注意:当git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成
注意: 要add的文件必须放在创建的文件夹目录或子目录(即就是工作区,.git文件就是版本区)

SSH Key

问题现象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
hexo d
INFO Validating config
INFO Deploying: git
INFO Clearing .deploy_git folder...
INFO Copying files from public folder...
INFO Copying files from extend dirs...
[master ddf123e] Site updated: 2024-05-18 18:16:33
2 files changed, 2 insertions(+), 2 deletions(-)
/Users/oo/.ssh/config line 14: keyword hostname extra arguments at end of line
/Users/oo/.ssh/config line 17: keyword identityfile extra arguments at end of line
/Users/oo/.ssh/config: terminating, 2 bad configuration options
致命错误:无法读取远程仓库。

请确认您有正确的访问权限并且仓库存在。
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
Error: Spawn failed
at ChildProcess.<anonymous> (/Users/oo/myblogs/blog/node_modules/hexo-deployer-git/node_modules/hexo-util/lib/spawn.js:51:21)
at ChildProcess.emit (node:events:520:28)
at ChildProcess._handle.onexit (node:internal/child_process:294:12)

问题分析:

根据问题现象进行分析,Git上传代码时鉴权失败,SSH 配置文件参数报错,SSH 配置文件解析失败,从而无法进行 Git 部署。

解决办法:

检查配置文件,重新生成SSH Key。


在 Mac 上为 GitHub 设置 SSH Key 需要按照以下步骤操作:

1. 检查现有的 SSH Key

首先,检查你的 Mac 是否已经有 SSH Key。打开终端(Terminal),输入以下命令:

1
ls -al ~/.ssh

这将列出 ~/.ssh 目录下的文件。如果你看到 id_rsaid_rsa.pub 文件,这表示你已经有 SSH Key,可以跳过生成新 Key 的步骤。

2. 生成新的 SSH Key

如果你没有现有的 SSH Key,或者想生成一个新的,可以使用以下命令:

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

替换 your_email@example.com 为你在 GitHub 上使用的电子邮件地址。然后,系统会提示你指定保存位置和文件名。默认情况下,它会保存在 ~/.ssh/id_rsa

接着,它会提示你输入一个 passphrase(密码短语)。你可以选择设置一个安全的密码短语,也可以直接按 Enter 跳过。

3. 启动 SSH 代理

确保 SSH 代理正在运行,并将你的 SSH Key 添加到 SSH 代理中。输入以下命令:

1
eval "$(ssh-agent -s)"

这将启动 SSH 代理。然后,添加你的 SSH Key 到代理中:

1
ssh-add ~/.ssh/id_rsa

4. 添加 SSH Key 到 GitHub

现在你需要将公钥添加到你的 GitHub 账户中。首先,复制你的 SSH 公钥:

1
pbcopy < ~/.ssh/id_rsa.pub

这会将公钥复制到剪贴板。

接着,打开 GitHub,登录到你的账户,按照以下步骤操作:

  1. 点击右上角的个人头像,然后选择 “Settings”。
  2. 在左侧菜单中,选择 “SSH and GPG keys”。
  3. 点击 “New SSH key” 按钮。
  4. 在 “Title” 字段中输入一个描述性名称(例如 “My MacBook”)。
  5. 在 “Key” 字段中粘贴你复制的公钥。
  6. 点击 “Add SSH key” 按钮。

5. 测试连接

最后,测试是否正确配置了 SSH Key,使用以下命令:

1
ssh -T git@github.com

如果一切配置正确,你会看到一条欢迎信息,类似:

1
Hi username! You've successfully authenticated, but GitHub does not provide shell access.

这表示你已经成功通过 SSH 连接到 GitHub。

总结

以上步骤涵盖了在 Mac 上为 GitHub 设置 SSH Key 的过程。从生成 SSH Key,到配置 SSH 代理,最后添加到 GitHub 账户并测试连接。按照这些步骤操作,你应该能够顺利配置并使用 SSH Key 来进行 Git 操作。

folderSync

使用 SFTP 协议在 macOS 和 Android 设备之间进行文件同步,不需要依赖云存储服务。你可以通过设置 macOS 上的 SFTP 服务器和在 Android 设备上配置 FolderSync 应用来实现。以下是详细的步骤:

阅读更多

git reset

要将代码回退到之前的某一次提交,你可以使用 git reset 命令。这将会撤销你的当前提交,并将代码库的 HEAD 指针移动到你指定的提交,但不会改变你的本地文件。如果你已经推送了这些更改到远程仓库,你可能需要注意,在回退后强制推送到远程仓库。以下是一些步骤:

阅读更多

hello domain

将hexo博客部署到个人域名上

域名购买

我是在腾讯云买的 首年45元 价格相对实惠
购买的基本流程就是进入腾讯云官网
进入控制台进行域名注册然后付钱买选择的域名就行
https://www.tencentcloud.com/zh/products/domain

阅读更多

hello github

将个人博客源码也托管到github
关键点:分支切换 找到隐藏文件

阅读更多

hello hexo

Hexo+Github搭建个人博客

1. 介绍

这是首次安装hexo成功后创建的test文档!

2. 常用操作

通过终端
cd 进入自己创建的myblogs文件夹
然后执行
hexo clean 清静态缓存
hexo g 生成html文件
hexo d 部署到Github
hexo s 启动服务 关闭 control+c

3. 注意事项

hexo 首次部署到github时 需要输入账号密码 ,这里的账号密码是指github中的Personal access tokens
可参考https://blog.csdn.net/qq_21040559/article/details/122621179

4. 参考博文:

https://blog.csdn.net/qq_21040559/article/details/122621179
https://hexo.io/zh-cn/docs/commands
https://xie.infoq.cn/article/90dc08c57463df3a1b2ad960f
https://yanglukuan.github.io/2017/08/17/firstblog/

hello menu

自定义修改icarus的菜单,增删改新的菜单选项
比如增加关于、相册等

修改主题的配置文件_config.icarus.yml

1
2
3
4
5
6
7
menu:
主页: /
归档: /archives
分类: /categories
标签: /tags
相册: /photo
关于: /about

注意:后面路径为对应页面的路径,自己需要对照着在Git控制台汇总创建对应页面

在Git控制台中创建对应页面

从博客网站的根目录打开Git控制台,新建对应页面,例如:

1
2
hexo new page "about"
hexo new page "photo"

继续在控制台键入命令

1
2
3
hexo cl
hexo g
hexo s

重新加载博客主页验证

浏览器打开 http://localhost:4000/ 新创建的菜单选项就成功了。