Skip to main content

3 posts tagged with "git"

View All Tags

· 2 min read
wen

从 Git 仓库中克隆特定文件夹

你可以使用 Git 的 稀疏检出(sparse checkout) 功能,只下载仓库中的特定文件夹。以下是具体步骤:

步骤

  1. 创建文件夹并进入:
mkdir <文件夹名称>
cd <文件夹名称>
  1. 初始化 Git:
git init
  1. 添加仓库 URL:
git remote add origin <仓库地址>
  1. 启用稀疏检出:
git sparse-checkout init
  1. 选择要克隆的文件夹:
git sparse-checkout set <文件夹路径>

<文件夹路径> 替换为你需要的文件夹(例如 docs)。

  1. 拉取文件夹内容:
git pull origin <分支名称>

<分支名称> 替换为对应的分支名(例如 main)。

示例

如果你只想克隆仓库中的 docs 文件夹:

mkdir my-repo
cd my-repo
git init
git remote add origin https://github.com/example/repo.git
git sparse-checkout init
git sparse-checkout set docs
git pull origin main

关键点

  • Git 版本要求: 稀疏检出功能需要 Git 2.25 或更高版本。

  • 克隆多个文件夹: 如果需要克隆多个文件夹,可以用空格分隔:

    git sparse-checkout set 文件夹1 文件夹2
  • 禁用稀疏检出: 如果想恢复克隆整个仓库的功能:

    git sparse-checkout disable

通过这种方式,你可以只下载需要的文件,节省时间和空间!

· One min read
wen

问题

当你在同一台电脑上使用多个 Git 用户的时候,你可能会遇到在 commit push 之后才发现自己没有切换到正确的用户的问题。

为了避免这种情况,我们可以在终端显示当前的 Git 用户信息。

img

解决方案

终端的显示信息(Shell Prompt) ,我推荐 Starship 配置来实现。

安装 Starship 可以参考官方文档, 这里就不再赘述。

配置

安装完后在 Starship 的配置文件 ~/.config/starship.toml 中添加以下配置, 格式可以按照自己的喜好修改 format = 部分 。

~/.config/starship.toml
format = """
...
${custom.git_username}\
...

[custom.git_username]
command = "git config user.name"
when = "[ -d .git ] && echo .git || git rev-parse --git-dir > /dev/null 2>&1"
format = ' [$symbol($output)@git]($style) '

· One min read
wen

git commit --amend --no-edit

When you think you have fixed an issue, but you were not able to fix it completely in one go (perhaps there were just some typos);

OR

When you really have fixed an issue, but you forgot to add some files,

You can use this:

git add .
git commit --amend --no-edit # --no-edit 选项表示不修改 commit message。
git push -f # 如果你已经 push 过了,需要添加 -f 来强制 push。
note

Maybe I just wrote this article to experience the gitGraph feature of mermaidjs 😄.

And BTW the commit message of gitGraph is rotated by default.

If you want to change it to horizontal, you need to add the following configuration in docusaurus.config.js:

+      mermaid: {
+ options: {
+ gitGraph: { rotateCommitLabel: false },
+ },
+ },