如何使用Github管理点文件?
我将我的点文件存储在github中,由于没有自动化,我付出了很多努力。我必须自己更新它 是否有一种方法可以自动安装/更新/同步点文件?我的意思是,在一个新服务器中,我下载点文件并执行如何使用Github管理点文件?,github,dotfiles,Github,Dotfiles,我将我的点文件存储在github中,由于没有自动化,我付出了很多努力。我必须自己更新它 是否有一种方法可以自动安装/更新/同步点文件?我的意思是,在一个新服务器中,我下载点文件并执行install脚本将点文件复制到本地。一段时间后,我可以执行updateToRemote脚本将本地更改推送到远程repo,并且在另一台服务器上,我可以执行updateToLocal脚本将远程更改推送到本地 差不多吧 有关点文件的主要信息来源是 它引用博客文章,例如,基于符号链接方法 首先,我们将把所有的dotfile
install
脚本将点文件复制到本地。一段时间后,我可以执行updateToRemote
脚本将本地更改推送到远程repo,并且在另一台服务器上,我可以执行updateToLocal
脚本将远程更改推送到本地
差不多吧 有关点文件的主要信息来源是 它引用博客文章,例如,基于符号链接方法 首先,我们将把所有的dotfiles放入一个名为dotfiles的文件夹中,如下所示:
/home/smalleycreative/dotfiles/vimrc
然后,我们将简单地从主目录符号链接到它们
提到了Atlassian教程“” 该技术包括使用特制的别名将Git裸存储库存储在“side”文件夹中(如
$HOME/.cfg
或$HOME/.myconfig
),以便针对该存储库而不是通常的.Git/
本地文件夹运行命令,这将干扰周围的任何其他Git存储库。(然后dotfiles文件夹作为git repo进行管理) 我正在使用git存储库(github)和bash脚本创建符号链接。但现在我发现这个工具似乎更强大。过来看:
其主要思想是使用一个单独的目录(通常称为.dotfiles),其中包含要在git中跟踪的所有真实点文件,并且在主目录中具有符号链接
git init --bare $HOME/.dotfiles
对于这种方法,已经有很多工作要做,因此我建议您检查DFM(点文件管理器):
-
这是我使用DFM选择的DOTFrm文件(你可以认为它是一个例子):
- Github官方存储库
- 以上的答案非常好,正是我在“真正的操作系统”上所做的
我在一个使用cygwin/msys的知名商业操作系统上遇到了一个问题,使用符号链接有时会对一些我最喜欢的软件的“本机”端口产生问题
为了解决这个问题,我尝试将$HOME文件夹直接作为git存储库。在一些失败之后,我发现密钥都在.gitignore文件中
因此,我已经使用了一段时间的设置是通过将$HOME设置为存储库、创建.gitignore文件并分别添加所需的“dotfiles”文件创建的。我还在备份驱动器上添加了一个存储库(在本例中是z)作为上游,以获得自动备份。如果您的文件夹已备份,则添加上游是不必要的复杂操作。因此,假设“/z/Backups/Dotfiles.git”是msys shell中预先存在的“裸”存储库,设置步骤如下:
$ cd $HOME
$ git init
Initialised empty Git repository in $HOME
$ git add .bashrc .emacs .gitconfig # for example
$ git commit -m "Initial import of dotfiles"
[master (root-commit) xxxxxxxx] Initial import for dotfiles
3 files changed, xxx instertions(+)
create mode 100644 .bashrc
create mode 100644 .emacs
create mode 100644 .gitconfig
# The following two lines just add an "upstream" purely for backup purposes.
$ git remote add origin /z/Backups/Dotfiles.git
$ git push -u origin master
<< snip >>
最后,以下命令(抱歉,我没有捕获这些命令的输出)将.gitignore本身添加到存储库中:
$ cd $HOME
$ git add .gitignore
$ git commit -m "Added some rules so git status on the dotfiles is useful."
$ git push
现在,dotfiles repo会忽略添加到home dir的任何“普通”文件,但任何新的dotfiles都会显示为git状态,例如:
$ cd $HOME
$ touch NewFile.txt
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
$ touch .funkychicken
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
.funkychicken
nothing added to commit but untracked files present (use "git add" to track)
$cd$HOME
$touch NewFile.txt
$git状态
论分行行长
您的分支机构是最新的“原始/主”分支机构。
没有要提交的内容,正在清理目录
$touch.时髦的鸡肉
$git状态
论分行行长
您的分支机构是最新的“原始/主”分支机构。
未跟踪的文件:
(使用“git add…”包含在将提交的内容中)
.芬奇鸡
提交时未添加任何内容,但存在未跟踪的文件(使用“git add”跟踪)
到目前为止,这已经很好地工作了,即使有些子目录是它们自己的(不相关的)git存储库。有时非git子目录会有一些“怪癖”,但到目前为止还没有什么问题。我发现了一种有趣的方法,可以使用纯git来管理点文件,不需要符号链接。通过这种方式,您应该能够以通常的方式进行推拉: 设置
git init --bare $HOME/.myconf
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME'
config config status.showUntrackedFiles no
其中my~/.myconf目录是一个git裸存储库
用法
通常的git命令可以与git别名一起使用,例如config或任何您选择的命令
config status
config add .vimrc
config commit -m "Add vimrc"
config push
好处
- 没有额外的工具
- 没有符号链接
- 资料来源:
- 附进一步信息的文章:
它将自动使用github和多台计算机同步对点文件的更改,以及许多其他功能。我也在寻找一些方法,以最少的步骤设置一台新计算机,花了一段时间后,我发现几乎所有的开发人员都使用git来存储和共享这些文件,并使用符号链接来同步它们 当然,符号链接可以工作,但它不是将本地文件同步到git存储库的最佳方式。对此有一个更好的解决方案,由Atlassian的人撰写 因此,使用git
bare
repository是将文件与远程副本同步的最好、最优雅的方法。创建bash脚本以自动安装和设置
管理点文件
管理这些点文件的诀窍是创建一个裸git存储库。如果您从零开始,以前没有跟踪过您的点文件,请在$HOME目录中创建一个裸存储库
git init --bare $HOME/.dotfiles
为了便于使用,我们将其别名为dotfiles,我们将使用它代替常规git与dotfiles存储库交互
alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME"
现在,我们可以使用dotfiles命令跟踪点文件了,以下是一些示例:
# to check the version history
dotfiles log
# to check the status of the tracked and untracked files
dotfiles status
# to add a file for tracking
dotfiles commit .vimrc -m ".vimrc added"
# push new files or changes to the github
dotfiles push origin main
我也使用这种方式来同步和存储我的点文件,并且可以在我写的关于管理点文件的地方阅读