有没有一种方法可以通过git就地〜/ .bashrc版本,而无需复制到其他仓库?

时间:2020-02-19 01:31:40

标签: git

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

有没有办法做到这一点?我认为困难在于,如果我在~创建一个存储库,它将包含主目录中的每个文件夹,这是不希望的。

有没有办法告诉git:仅这些文件或文件夹的版本 ,而忽略其他所有内容,并且不将它们视为子模块?如果可能是这样,那可能是一个解决方案,除了它看起来像是位于主目录中的超大型存储库,同时却几乎忽略了所有内容。

4 个答案:

答案 0 :(得分:2)

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

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别名。

答案 1 :(得分:1)

签出简单修订控制SRC,这是一个简单的现代版本控制系统,用于管理单个文件(而不是在锁步中更改的文件集合)。或寻找所有这些的祖父,版本控制系统RCS(甚至可能作为您最喜欢的Linux发行版的官方软件包提供)。

不久前的一天琐事琐事用RCS管理IBM的AIX代码(也许直到今天,它还是在SCO与IBM的诉讼中出现)。

答案 2 :(得分:1)

您可以尝试gitignore。

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

除了.bashrc之外,所有模式都忽略。

*
!.bashrc

答案 3 :(得分:1)

bare repo approach是另一种选择:

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

该技术包括使用特制别名将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
相关问题