Skip to content

Commit

Permalink
Modify a post.
Browse files Browse the repository at this point in the history
  • Loading branch information
zhydong258 committed Feb 23, 2024
1 parent 7ddd61d commit 470596e
Showing 1 changed file with 19 additions and 7 deletions.
26 changes: 19 additions & 7 deletions source/_posts/2024-02-23-管理自己的配置文件.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ categories: 运维

Linux 下面会有大量的配置文件,他们多是以`.`开头的隐藏文件,放置在`HOME`下面,后者`~/.config/`文件夹下面,如果需要在多台电脑上保持这些配置文件的一致,可以使用git的办法去管理,这里用到了一个git的特殊用法。

## 建立 bara 的仓库
## 1 建立 bara 的仓库

```bash
git init --bare $HOME/.dotconfig
Expand All @@ -18,7 +18,7 @@ dotconfig config --local status.showUntrackedFiles no
echo "alias dotconfig='/usr/bin/git --git-dir=$HOME/.dotconfig/ --work-tree=$HOME'" >> $HOME/.bashrc
```

## 添加需要管理的dot file
## 2 添加需要管理的dot files

```bash
dotconfig status
Expand All @@ -29,17 +29,17 @@ dotconfig commit -m "Add bashrc"
dotconfig push
```

## github 上建立名为 dotconfig 的仓库,并在本地设置 remote 地址
## 3 github 上建立名为 dotconfig 的仓库,并在本地设置 remote 地址

```bash
git remote add origin https://github.com/zhydong258/dotconfig.git
git branch -M main
git push -u origin main
```

## 在新的电脑上同步
## 4 在新的电脑上同步

### clone 到本地
### 4.1 clone 到本地

```shell
git clone --bare https://github.com/zhydong258/dotconfig.git $HOME/.dotconfig
Expand All @@ -49,11 +49,11 @@ dotconfig config status.showUntrackedFiles no
echo "alias dotconfig='/usr/bin/git --git-dir=$HOME/.dotconfig/ --work-tree=$HOME'" >> $HOME/.bashrc
```

### 脚本的形式(暂时还没有用过下面的脚本,因为没有新电脑去测试)
### 4.2 脚本的形式

```shell
#!/bin/bash
git clone --bare https://github.com/zhydong258/dotconfig.git $HOME/.cfg
git clone --bare https://github.com/zhydong258/dotconfig.git $HOME/.dotconfig
function dotconfig {
/usr/bin/git --git-dir=$HOME/.dotconfig/ --work-tree=$HOME $@
}
Expand All @@ -68,3 +68,15 @@ echo "alias dotconfig='/usr/bin/git --git-dir=$HOME/.dotconfig/ --work-tree=
dotconfig checkout
dotconfig config status.showUntrackedFiles no
```

其中,`$?`中存储的是上个命令执行的结果,如果成功返回`0`,如果失败,则返回值`非0`。这里上一条命令是`dotconfig checkout`,如果出现类似如下错误,表明本地目录已经有文件存在了。

```
error: The following untracked working tree files would be overwritten by checkout:
.bashrc
.gitignore
Please move or remove them before you can switch branches.
Aborting
```

在后续的`else`中,这些已经存在的文件会移动到`.dotconfig-backup`文件夹里面。

0 comments on commit 470596e

Please sign in to comment.