Seb*_*sen 40 configuration git home-directory
我想使用 github 备份和同步我的点文件。由于默认情况下所有点文件都驻留在 $home 中,我应该只git init
在 $home 文件夹中,还是这是个坏主意?
git init
在 $home 中执行后,我的想法是 .gitignore 所有非点文件和非点文件夹。
Rav*_*ina 57
创建一个“裸”的 git 存储库:
cd $HOME
git init --bare .dotfiles
Run Code Online (Sandbox Code Playgroud)
该
--bare
标志会创建一个没有工作目录的存储库,从而无法在该存储库中编辑文件和提交更改。
创建别名来管理我们刚刚创建的存储库:
alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME"
Run Code Online (Sandbox Code Playgroud)
忽略未跟踪的文件显示在git status
:
dotfiles config --local status.showUntrackedFiles no
Run Code Online (Sandbox Code Playgroud)
添加你想要的文件:
dotfiles add .bash_aliases
Run Code Online (Sandbox Code Playgroud)
犯罪。
dotfiles commit -m 'Add .bash_aliases'
Run Code Online (Sandbox Code Playgroud)
现在使用bare
存储库,.git
您的$HOME
目录中没有目录;因此在使用git
.
这就是我管理我的dotfiles
. 几年前我第一次在这里读到它。
nev*_*ves 13
这是一个很好的做法,但默认情况下您应该忽略所有文件,只添加您需要的文件。下面是一个例子.gitignore
:
# ignore all
*
# include dot files (including .gitignore)
!.*
Run Code Online (Sandbox Code Playgroud)
您还可以排除将其他行放在 .gitignore 末尾的其他文件:
# ignore all
*
# include dot files (including .gitignore)
!.*
.ssh
Run Code Online (Sandbox Code Playgroud)
小智 10
如果您对在您的主文件夹中拥有一个 git 存储库感到有些不安(我会这样做),您可以考虑这个想法:
~/src/configuration
或者~/etc
或你喜欢的地方。计算中的每个问题都可以通过额外的间接层来解决;-)
我会说这确实是一种不好的做法。https://dotfiles.github.io/tutorials/或https://github.com/webpro/awesome-dotfiles上的教程都不会让您将主文件夹直接跟踪到主级 git 存储库中。大多数将手动复制或符号链接文件。
虽然 git 跟踪您的 dotfiles 是一个好主意,但在家庭级别拥有一个 git repo 很容易在您实际上打算在更具体的目录存储库中运行它时意外地向该 repo 运行命令。
例如:
mkdir ~/Projects/my-awesome-web-app
cd ~/Projects/my-awesome-web-app
npm init # initializes node projects, creates package.json
git add package.json # would not fail, since it's actually inside a git repo
git commit -m "starts work" # actually commits to the home repo, not locally
Run Code Online (Sandbox Code Playgroud)
此外,Anish Athalye 选择不直接在 git 下跟踪主文件夹:
- 不可能意外删除您的文件。将您的整个主目录置于版本控制之下,运行 git clean 之类的程序可能会清除主目录中 VCS 未跟踪的所有内容。
- 可以跟踪属于 $HOME 以外的其他位置的配置文件。
- 在新机器上安装点文件更容易。所需要的只是克隆您的点文件,然后复制或链接文件。将整个主目录保留在版本下会使安装变得复杂。