Git 命令集成

Git基本使用方法示意图

  1. 测试 GitHub 可访问性

    ssh -T git@github.com

  2. 更新主分支(下载更新)

    D: && D:\faradays-studio.github\faradays-studio.github.io && git checkout

  3. 更新其他分支(下载更新)

    git checkout -b blog origin/blog
    git checkout -t origin/blog

  4. 提交到本地

    git commit -a -m u”pdate the website statement”

  5. 提交到GitHub

    git push origin master

  6. 基本用法说明

  • 查看分支
    git branch -a
    git branch -v
    git branch -r

  • 查看最近的 commit 信息
    git show HEAD

      按 q 退出
  • git checkout -b <分支名>
    git checkout -b blog

  • 从 服务器 下载更新到本地
    由于 hexo 更新后,本地会版本落后,因此需要更新
    git pull <远程主机名> <远程分支名>:<本地分支名>
    git pull origin master

      或 git pull origin master:master

    git pull origin blog:blog

使用 git 管理主题的流程示意

``` sh
#克隆你fork出来的分支
$git clone <远程Arepository>

#添加远程B repository标签
$git remote add <远程B repository标签> git@github.com:XXXX/ceph.git

#从远程Brepository的master分支拉取最新objects合并到本地master分支
$git pull <远程B厂库标签> master:master

#切换到要修改的分支上
$git checkout YYYY

#在当前分支的基础上创建一个开发分支,并切换到该分支上,你将在该分支上coding
$git branch develop; git checkout develop

#在工作区coding
coding...... 

#将修改保存到索引区
$git add .

#将修改提交到本地分区
$git commit -a

#将本地分支my_test提交到远程A repository的my_test分支上
$git push origin my_test:my_test
```

hexo 博客删除部分 commit 的操作实践

经过 2 天半的来回测试,终于删除了上传了隐藏文件 hid*.html 文件的提交。

  1. 出现 HEAD detached at 68e8065 等错误的解决方法:

     # 给 blog 起个 branch 名 blog_temp1
     git branch blog_temp1 blog
     git branch -a
     # Head 指向实际使用的 branch,注意不是 origin/blog
     git checkout blog
     # 融合到当前 branch
     git merge blog_temp1
         合并时存在问题,如果以本地为准 git  add,以服务器为准则 git  rm XXXX,然后 git commit
         再重新执行合并
     # 删除临时 branch
     git branch -d blog_temp1
  2. 删除特定 commit (# 由于 hexo 自身存在一个版本库,因此需要进行相应的处理)

     git log  
     git rebase -i XXX       # 将需要删除的最早的提交之前的一次提交做基础 
         将相关 commit 记录中的 pick 改为 drop,保存即实现本地删除。
     git push origin blog -f    # 强制提交本地版本到远程(实现远程删除)
     git status       # 查看状态
     git log --oneline
     git pull origin blog:blog
     git log --oneline
    
     cd D:\WebSites\faradays-studio.hexo\.deploy_git
     执行上述过程,如出现 `HEAD detached ` 等报错,注意分支名称实际为 master,
     执行 hexo 同步至远程
  3. 具体的操作过程:

     # 从 GitHub 下拉取版本库,确保本地文件为最新
     git pull origin blog:blog
     # 查看更新日志
     git log
         相关 log 文件使用 VI 的形式打开,因此可以按 shift + G 跳转到底,按 q 退出修改。
     # 将需要删除的最早提交的前一次提交,设置为版本基础
     git rebase -i 982c78fc82a2a3804233e9ff7ef315fc21dc0822
         在弹出文件中,将会展示在该提交之后的每个提交信息
         将相关 commit 记录中的 pick 改为 drop,保存即实现本地删除。
         出现 `HEAD detached at 982c78f` 报警
    
         # 查看当前分支情况
         git branch -a
         # 将当前分支改名
         git branch blog_temp1 blog
         # 解决由于删除造成的版本 merge 报警
         git rm -r about
         git rm content.json
         git rebase --continue
         git commit
         git push origin blog -f
    
         # 合并分支
         #git merge blog_temp1
         # 重新对 Head 指向 branch(测试表明该步骤不能执行)
         # git checkout blog
         # 删除临时的版本
         git branch -d blog_temp1
     git log --oneline
    
     # git pull origin blog:blog 等命令无法对 hexo 的版本库进行更新,因此执行以下操作
     # 删除 .deploy_git 文件夹,重新建立版本库理论可行。详见 https://github.com/hexojs/hexo-deployer-git 。
     git rebase -i 982c78fc82a2a3804233e9ff7ef315fc21dc0822
     # 查看状态
     git status
     git rm -r about
     git rm content.json
     git rebase --continue
     git log
     git log --oneline
    
     #至此,各个版本完成更新,可以使用 hexo 重新生成一次,确保删除的文件被生成
     hexo -d g
    
     # 查看本地版本日志
     git log --oneline
     # 解决由于前边删除文件导致的版本文件数量不一致的问题
     git pull -r
     # 下载网络更新到本地
     git pull origin blog:blog
     # 检查更新情况后的版本日志
     git log --oneline

参考文献

  1. UniqueColor.git chekout分支遇到问题:need merge[EB/OL].https://www.cnblogs.com/UniqueColor/p/6594942.html, 2020/08/26.

  2. 奔跑的小龙码.git删除指定commit[EB/OL].https://www.cnblogs.com/lwcode6/p/11809973.html, 2020/08/26.

    通过 add /rm 来指定本机处理措施,git commit -s,再 pull,再push

  3. Jack_Chao.Git 快速使用 之 冲突 merge 快速解决[EB/OL].https://www.jianshu.com/p/50ef88bda474, 2020/08/26.

  4. 星辰之力.git push & git pull 推送/拉取分支[EB/OL].https://www.cnblogs.com/zhujiabin/p/9641305.html, 2020/08/27.