🏪【Git】Git/Github常用用法
2023-2-17
| 2024-10-24
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 24, 2024 05:44 AM
Parent item
领域

使用git管理issue

比较简单,参考官方文档即可:

使用git管理代码

加速github访问

  1. GitHub 镜像访问
    1. 这里提供两个最常用的镜像地址(别登录账号):
      也就是说上面的镜像就是一个克隆版的Github,你可以访问上面的镜像网站,网站的内容跟Github是完整同步的镜像,然后在这个网站里面进行下载克隆等操作。
  1. GitHub文件加速
    1. 利用 Cloudflare Workers 对 github release 、archive 以及项目文件进行加速,部署无需服务器且自带CDN.
      以上网站为演示站点,如无法打开可以查看开源项目:gh-proxy-GitHub 文件加速自行部署。
  1. Github 加速下载
    1. 只需要复制当前 GitHub 地址粘贴到输入框中就可以代理加速下载!

github免密码push和pull代码

将一个已存在的目录转换为一个 GIT 项目并托管

把已经被版本管理track的文件加入.gitignore

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。

切换分支后清除多余的文件

更新本地的所有分支和远端保持同步

代码写一半,忘记切分支/新建分支/修改其他分支的bug

stash常用命令:
  • git stash:能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
  • git stash list:查看当前 stash 的列表,因为有些时候会存多个暂存区
  • git stash pop:将当前 stash 中的内容弹出,并应用到当前工作目录上。
  • git stash apply:将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
  • git stash clear:除堆栈中的所有内容

通过rebase和merge合入开发分支的代码到主分支

更改在本地分支上进行,在需要合并时,切换到 master 分支拉取最新代码后,根据拉取的内容,再去合并分支。同时这种方式也是更受大家推崇的。
git支持很多种工作流程,我们采用的一般是这样,远程创建一个主分支,本地每人创建功能分支,日常工作流程如下:
  1. 去自己的工作分支$ git checkout work
  1. 工作....
  1. 提交工作分支的修改$ git commit -a
  1. 回到主分支$ git checkout master
  1. 获取远程最新的修改,此时不会产生冲突$ git pull
  1. 回到工作分支$ git checkout work
  1. rebase合并主干的修改,如果有冲突在此时解决$ git rebase master
  1. 回到主分支$ git checkout master
  1. 用merge合并工作分支的修改,此时不会产生冲突。$ git merge work
  1. 提交到远程主干$ git push
这样做的好处是,远程主干上的历史永远是线性的。每个人在本地分支解决冲突,不会在主干上产生冲突

同步fork的原仓库提交代码

  1. 克隆代码到本地: git clone https://github.com/shiqinfeng1/xxx.git
  1. 添加原仓库为upstream: 例如 git remote add upstream https://github.com/selfteaching/the-craft-of-selfteaching.git
  1. 获取原仓库的最新代码: git fetch upstream
  1. 合并:git merge upstream/main
  1. 如果有冲突,则解决冲突,例如在vscode中编辑处理
  1. 提交合并的修改: git push

仓库代码压缩打包

打包后的代码不包含git先关的文件。在一个项目中如果要拷贝另一个项目的代码,那需要先打包再复制,如果直接clone否则会导致git冲突。

代码回滚

notion image

标签操作

打标签
删除本地仓库标签
列出标签
推送标签
删除远程仓库标签
注:tagName 为待删除标签名称
 

代码合并多个中间多个提交commit

下面是合并最新的4个提交:
git rebase -i HEAD~4这一步需要在编辑框中选择, 一般选s或f
合并完成并推送到远端之后, 如果另一端电脑也在使用该分支,那么需要执行: git reset --hard origin/main 同步刚才的rebase
如果push --force失败,那么需要到仓库中设置该分支允许强制push。
举例:
  1. 存在如下commit的git
    1. notion image
      现在想要把 second, third, fourth commits合并成一个新的commit,把seventh, eighth commits合并成一个新的commit
  1. 输入指令
      • i表示交互性操作
      • d25154d0f3138 6e77559cec6 表示将要操作的commit区间,该区间为前开后闭,代表从d25154d0f3138后面的commit: 4d475036216f9a 开始到6e77559cec6
      • 后面的闭合区间也可以省略:
        • 代表操作区间从d25154d0f3138后面的commit: 4d475036216f9a到当前commit
      • 如果知道需要操作的具体commits个数为7,也可以这样:
    1. 输入上面的指令后出现如下界面:
      1. notion image
        notion image
         
        为了合并second ,third ,fourth,合并seventh, eighth我们需要做如下改动:
        notion image
        保存并退出该文件,弹出如下界面:
        notion image
        这个界面表示需要输入为合并second third fourth commits的描述,我们做如下修改:
        notion image
        保存退出后,继续自动弹出弹出seventh eighth commits合并对话框:
        notion image
        同理作如下修改:
        notion image
        保存退出后,可以看到rebase成功,并且可以查看rebase后新的提交记录:
        notion image
         
    软件开发
  2. 软件基础设施
  3. Git
  4. 【分布式一致性算法】Raft【读书笔记】《Go With The Domain》11. 测试架构
    目录