跳到主要内容

Gitignore如何优雅地忽略不必要的文件

· 阅读需 1 分钟
素明诚
Full stack development

使用 .gitignore 排除不必要的文件

在使用 Git 进行版本控制时,经常有一些文件或目录我们不希望加入到版本控制中,例如依赖文件、配置文件或是编译生成的文件。.gitignore 文件就是用来帮助我们实现这个目的的。

创建 .gitignore 文件

在你的 Git 项目根目录下,新建一个 .gitignore 文件。

# .gitignore 内容示例

# 依赖文件
/node_modules
/.pnp
.pnp.js

# 测试产生的文件夹
/coverage

# 生产构建目录
/build

# 其他常见不需要的文件
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

.gitignore 过滤规则

  • # 开头的行为注释。
  • / 开头表示目录。
  • * 用于匹配多个字符。
  • ? 可以匹配任何单个字符。
  • [] 用于匹配字符集中的任何字符(例如,[abc] 将匹配任何 abc 字符)。
  • 使用 ! 开头的模式将排除之前定义的模式。

通过上述规则,你可以轻松地定制 .gitignore,确保只有需要的文件被加入到 Git 版本控制中。

解决GitHub push 不上去

· 阅读需 1 分钟
素明诚
Full stack development

一、配置 host 方法

1.https://github.com.ipaddress.com/

12c873d84a956c9ad9c37eefcc30f934

2.https://fastly.net.ipaddress.com/github.global.ssl.fastly.net#ipinfo

ef152ae3bf890ac8ed00326087af6e7e

3.https://github.com.ipaddress.com/assets-cdn.github.com

961478a1d45f15436e95c381153e2cc9

4.打开 hosts 文件,把记录的 IP 和对应的域名写上

140.82.112.3 github.com //图1
199.232.69.194 github.global.ssl.fastly.net //图2
185.199.108.153 assets-cdn.github.com //图3
185.199.109.153 assets-cdn.github.com //图3
185.199.110.153 assets-cdn.github.com //图3
185.199.111.153 assets-cdn.github.com //图3

二、修改本地 host

140.82.112.3 github.com

刷新本地的 DNS

ipconfig /displaydns

其他错误

error 11053

git config --global http.postBuffer 524288000

三、刷新代理

配置/取消 http 代理

# 配置socks5代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
# 配置http代理
git config --global http.proxy 'http://127.0.0.1:1080'
git config --global https.proxy 'https://127.0.0.1:1080'
git config --global --unset http.proxy

配置/取消 HTTPS 代理

git config --global https.proxy
git config --global --unset https.proxy

四、指定代理的作用域

#只对github.com
git config --global http.https://github.com.proxy socks5://127.0.0.1:7890

四种方法,最终肯定会解决你的问题,如果能开了代理,可以直接指定本地的代理软件,也就是按照四进行操作

理解文件路径中的点和斜杠

· 阅读需 1 分钟
素明诚
Full stack development
.  表示当前目录
.. 表示当前目录的上一级目录。
./ 表示当前目录下的某个文件或文件夹
../表示当前目录上一级目录的文件或文件夹

总结

点表示的是当前目录,斜杠标识的是目录下面,多一个点就表示当前的路径上层。

如何在移动设备上使用 05px

· 阅读需 1 分钟
素明诚
Full stack development
  1. 在非高分辨率的屏幕上,0.5px 可能会被四舍五入到 1px 或完全忽略。
  2. 在高分辨率(例如 Retina 屏幕)的设备上,0.5px 可能会渲染得很细,但在标准分辨率的屏幕上可能看不到。

使用媒体查询

根据设备的像素比 (devicePixelRatio) 使用媒体查询来应用不同的样式。例如,对于高分辨率的屏幕,你可以设置边框为 0.5px,而对于标准分辨率的屏幕,你可以设置为 1px

/* 默认样式(针对非高分辨率屏幕) */
.border {
border: 1px solid #000;
}

/* 针对高分辨率屏幕的样式 */
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
.border {
border: 0.5px solid #000;
}
}

使用伪元素

使用伪元素(例如 ::before::after)创建边框效果。你可以设置伪元素的高度或宽度为 1px,然后使用缩放 (scale) 转换来调整大小。

.border::after {
content: "";
display: block;
height: 1px;
background-color: #000;
transform: scaleY(0.5);
}

DNS 的工作原理

· 阅读需 3 分钟
素明诚
Full stack development

1.浏览器缓存检查:

首先,浏览器会查看自己的缓存。如果你之前访问过 www.sumingcheng.cn,浏览器可能已经保存了它的 IP 地址。如果找到了,就会直接使用这个 IP 地址去访问,整个过程在这里结束!

2.操作系统缓存检查:

如果浏览器没有相关缓存,它会查询操作系统的 DNS 缓存。操作系统每次成功解析域名后都会将结果暂时存储。如果操作系统缓存中有该域名的 IP 地址,查询过程在此结束,浏览器会用这个地址去访问网站。

3.本地 DNS 服务器查询:

如果上述两个缓存都没有结果,浏览器会发出一个系统调用,请求操作系统查询配置好的 DNS 服务器。这个服务器通常是由你的网络服务提供商 (ISP) 设置的,但也可能是其他公共 DNS 服务器,如 Google DNS (8.8.8.8)。

4.真正的 DNS 查询开始:

a.请求根服务器:

本地 DNS 服务器首先会查询一个 DNS 根服务器。虽然根服务器不知道 www.sumingcheng.cn 的 IP 地址,但它知道哪些服务器负责 .cn 域名,因此它会返回一个 .cn 的顶级域名 (TLD) 服务器的地址。

b.查询.cnTLD 服务器:

本地 DNS 服务器随后会向 .cn TLD 服务器发送查询请求。这个服务器会告诉本地 DNS 服务器哪个权威 DNS 服务器负责 sumingcheng.cn 这个域名。

c.查询权威 DNS 服务器:

然后,本地 DNS 服务器会向 sumingcheng.cn 的权威 DNS 服务器发出请求。这个权威服务器包含了 www.sumingcheng.cn 的确切 IP 地址,并将这个地址返回给本地 DNS 服务器。

5.结果返回给用户:

权威 DNS 服务器的答案随后被返回给本地 DNS 服务器。本地 DNS 服务器将这个答案传递给用户的操作系统,操作系统再把这个 IP 地址传递给浏览器。现在,浏览器可以使用这个 IP 地址与 www.sumingcheng.cn 的服务器建立连接。

6.结果被缓存:

为了加速未来的 DNS 查询,该 IP 地址会在多个级别被缓存:浏览器、操作系统、以及本地 DNS 服务器。

整个过程结束

Git 的 Amend 功能

· 阅读需 2 分钟
素明诚
Full stack development

背景

你可能已经进行了一个提交,但随后意识到遗漏了一些文件或更改。而不是做一个新的提交,你可以使用 "Amend" 来将这些遗漏的文件添加到前一个提交中。但是这个提交会改变 hash

如何使用

使用 git commit 命令的 --amend 选项来修正当前的提交:

git commit --amend

这会打开一个文本编辑器,让你修改提交消息。保存并关闭编辑器后,提交将被修正。

注意事项:

  • 如果你不想修改提交消息,只想添加遗漏的文件或更改,你仍然需要打开并关闭编辑器,即使没有做任何更改。
  • 请确保你没有推送之前的提交到远程仓库,否则在尝试推送修正后的提交时可能会遇到问题。如果你已经推送了,你可能需要使用 git push origin branchname --force 来强制推送修正后的提交,但这样做可能会导致与其他开发者的合作问题。所以在 push -f 的时候一定要确认是否提交到了远程分支,是否会覆盖他人分支

没有网络连接的情况下如何将在两个不同的 git 仓库之间共享代码更改

· 阅读需 2 分钟
素明诚
Full stack development

1. 仓库 A:生成补丁

假设你已经在仓库 A 中做了一些更改,并提交了这些更改。

1.1. 首先,导航到仓库 A 的目录:

cd /path/to/repoA

1.2. 使用git format-patch生成补丁。例如,如果你想为最后一个提交生成补丁:

git format-patch -1 HEAD

这会生成一个以.patch结尾的文件。文件名通常包含提交的哈希值和提交信息。

生成指定分支

如果你只想生成 dev 分支中从 6cb7ceaab94573a13d1e2e7fa2095b5456fde5bd 之后的所有提交的补丁,你可以明确指定范围,以确保只考虑 dev 分支的提交。以下是如何做到这一点的命令:

bashCopy code
git format-patch 6cb7ceaab94573a13d1e2e7fa2095b5456fde5bd..dev

这会为 6cb7ceaab94573a13d1e2e7fa2095b5456fde5bd 之后的 dev 分支上的所有提交生成补丁。这样,你就可以确保只是针对 dev 分支的更改生成补丁,而不会包括其他分支的提交。

2. 仓库 B:应用补丁

现在,你需要将上一步生成的补丁文件从仓库 A 传输到仓库 B 的机器上。你可以使用电子邮件、USB 驱动器、网络共享等任何方法来做到这一点。

2.1. 在仓库 B 的机器上,导航到仓库 B 的目录:

cd /path/to/repoB

2.2. 使用git apply来应用补丁:

git apply /path/to/patchfile.patch

这样,仓库 B 就会包含仓库 A 的那些更改。

注意:如果补丁不能直接应用,git apply可能会报错。这通常是因为两个仓库之间的代码有较大的差异。在这种情况下,你可能需要手动解决冲突或在应用补丁时使用某些额外的选项。

合并两个不同的Git仓库

· 阅读需 2 分钟
素明诚
Full stack development

问题背景

我们的公司维护着两个代码仓库,虽然它们的代码相同,但分别服务于不同的业务领域。时常,我们需要将仓库 A 中的优化措施迁移到仓库 B,以确保两者的同步和效率。在以下说明中,我将使用“AB”作为示例名称,但在实际操作中,您可以根据需要更换相应的名字。

B 仓库迁移到 A 仓库

在 A 仓库,添加 B 仓库的远程仓库地址

git remote add B ssh://git@gitlab.xxxx.git

获取远程 B 仓库的数据

git fetch other

创建并且检出新的分支

git checkout -b dev B/dev

把该分支提交到 A 仓库的远程

git push orange dev

接下来,这个仓库就多了其他仓库的 dev 分支,你可以进行 rebase、merge、优选等操作就非常方便了。

注意:

  • 如果你的当前仓库已经有一个名为 dev 的分支,上述命令会失败。在这种情况下,你可能需要选择一个不同的分支名或者首先删除现有的 dev 分支。
  • 你现在有了一个远程链接名为 other,你可以在以后使用它来获取或推送数据到该远程仓库。如果你不再需要这个链接,可以使用 git remote remove other 来删除它。