如何使用Github管理点文件?

如何使用Github管理点文件?,github,dotfiles,Github,Dotfiles,我将我的点文件存储在github中,由于没有自动化,我付出了很多努力。我必须自己更新它 是否有一种方法可以自动安装/更新/同步点文件?我的意思是,在一个新服务器中,我下载点文件并执行install脚本将点文件复制到本地。一段时间后,我可以执行updateToRemote脚本将本地更改推送到远程repo,并且在另一台服务器上,我可以执行updateToLocal脚本将远程更改推送到本地 差不多吧 有关点文件的主要信息来源是 它引用博客文章,例如,基于符号链接方法 首先,我们将把所有的dotfile

我将我的点文件存储在github中,由于没有自动化,我付出了很多努力。我必须自己更新它

是否有一种方法可以自动安装/更新/同步点文件?我的意思是,在一个新服务器中,我下载点文件并执行
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
      
      好处

      • 没有额外的工具
      • 没有符号链接
      更多信息

      • 资料来源:
      • 附进一步信息的文章:

      好吧,三年过去了,没有人想出什么好主意,所以我尝试了一下这个问题。它不依赖于平台,也不依赖于shell,除了您现有的与bourne兼容的shell(bash、zsh、ksh等)之外,没有其他依赖性。它适用于mac、linux和windows:


      它将自动使用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
      
      我也使用这种方式来同步和存储我的点文件,并且可以在我写的关于管理点文件的地方阅读