我想使用git来对~/.bashrc
和~/.bash_profile
进行版本控制,最好是在原地(在实际位置),而不是创建一个新的repo并复制文件并进行版本控制在那里。
有没有办法做到这一点?我认为困难在于,如果我在~
创建一个存储库,它将包含主目录中的每个文件夹,这是不希望的。
有没有办法告诉git:仅这些文件或文件夹的版本 ,而忽略其他所有内容,并且不将它们视为子模块?如果可能是这样,那可能是一个解决方案,除了它看起来像是位于主目录中的超大型存储库,同时却几乎忽略了所有内容。
答案 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