有没有一种方法可以通过git将~/.bashrc版本安装到位,而无需复制到不同的repo



我想使用git版本~/.bashrc~/.bash_profile,最好是在原地(在实际位置(,而不是创建一个新的repo并复制文件并在那里进行版本控制。

有办法做到这一点吗?我认为困难在于,如果我在~上创建一个repo,它会包含我主目录中的每个文件夹,这是不可取的。

有没有办法告诉git:versiononly这些文件或文件夹,而忽略其他一切,不将它们视为子模块?如果可以这样的话,这可能是一个解决方案,只是它看起来像是一个超级大的repo,位于主目录中,但同时忽略了几乎所有的东西。

您可以在另一个目录中创建repo,然后使用主目录(~(中的符号链接指向新文件。

mkdir -p ~/path/to/repo
mv ~/.bashrc ~/path/to/repo/
cd ~
ln -s ~/path/to/repo/.bashrc .bashrc
cd ~/path/to/repo
# edit .bashrc
git init
git add .bashrc
git commit -m "Initial commit"

这样,您就有了一个只包含要进行版本控制的文件的普通存储库,而系统的其他部分则像以前一样使用~/.bashrc,透明地遵循到版本控制文件的链接。不需要.gitignore或shell别名。

裸回购方法是另一种选择:

没有额外的工具,没有符号链接,文件在版本控制系统上被跟踪,你可以为不同的计算机使用不同的分支,你可以在新安装时轻松地复制你的配置。

该技术包括将Git裸存储库存储在"侧面";文件夹(如$HOME/.cfg$HOME/.myconfig(,使用特制的别名,以便命令针对该存储库而不是通常的.git本地文件夹运行,这会干扰周围的任何其他Git存储库。

与别名耦合

alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no

然后只添加您想要的文件:

config add .vimrc

您可以尝试gitignore。

cd ~
git init
echo '*' >> .git/info/exclude
echo '!.bashrc' >> .git/info/exclude
git add .bashrc
git commit -m'foo'

模式忽略除.bashrc之外的所有模式。

*
!.bashrc

查看Simple Revision Control SRC,这是一个简单的现代版本控制系统,用于管理单个文件(而不是同步更改的文件集合(。或者寻找它们中的鼻祖,Revision Control System RCS(甚至可能作为您最喜欢的Linux发行版的官方包提供(。

不久前,IBM的AIX代码是用RCS管理的(也许到今天为止,这仍然是SCO与IBM的诉讼(。

最新更新