当前位置: 首页>>技术教程>>正文


在/(根)创建Git存储库以跟踪设置?

, ,

问题描述

因此,我主要将Git用于开发目的,但我只是意识到可以将其用于存储我在Ubuntu安装中拥有的设置文件的版本。

我建议的设置是:

  • git init位于/的存储库

  • /处添加一个.gitignore,它会忽略除我要跟踪的特定设置以外的所有文件。

    例如,.gitignore可以包含(source):

    ## Ignore everything...
    *
    
    ## Except...
    !/etc/default/tlp
    !/etc/crontab
    
  • 每当我更改这些低级设置时,我都可以对其进行跟踪。

此设置有什么问题吗?内核是否总是需要/才能仅具有某些文件夹?它会破坏任何应用程序的功能吗?

最佳回答

这两个问题的答案都为否,您可以在/中创建所需的任何目录。唯一可能发生的事情是我猜想某些空间路径的权限问题。

但是最好将.git目录存储在其他位置,如下所示:

git --git-dir=/home/user/backup-root --work-tree=/

读取here

次佳回答

实际上,您可能希望对/etc/中的配置文件进行版本控制(您不必关心根目录/的条目,尤其是procusr/中的bin之类的目录),因此您可能需要安装etckeeper软件包

您还可以版本控制某些选定的子目录(例如您提到的/usr/share/applications/)。

但是,请不要与Ubuntu package management系统混为一谈。也许您大多数时候应该备份当前已安装软件包的列表。

第三种回答

在/中有一个git repo可以很好地工作,除了它确实使您很难注意到当您有一个较低级别的git repo出现问题时,因为它会回答所有问题。

注意:使用’debsums’的工作量较小,可能更有用

sudo apt-get install debsums

这将使您能够快速检测二进制文件或配置文件中的(大多数)更改。

作为已安装软件包的示例,此处有一些与上游软件包不同的软件包。

$ sudo debsums -c
/boot/vmlinuz-4.10.0-19-generic

您可以使用以下命令获取更改的配置文件列表:

$ sudo debsums -ec
debsums: missing file /etc/default/chromium-browser (from chromium-browser package)
 /etc/libvirt/libvirt.conf
 <snip>

请注意,chromium-browser的包装方式不正确,并且在打包文件列表中列出了一个不存在的文件。

/var/lib/dpkg/info/chromium-browser.list

这将使用dpkg数据,并避免了较大的/.git目录和工作流程。

第四种回答

因此,我一直在探索其他答案,并且找到了适合我的程序:

  • /处创建.gitignore。由于Git处理子文件夹中的白名单文件的方式,这比我想象的要复杂得多。我使用thisthis链接来帮助我。

    ## Source: https://stackoverflow.com/a/29932318/4900327
    ## Comments are on new lines because trailing whitespace matters in Git (stackoverflow.com/a/8865858/4900327)
    
    # Blacklist all files, folders and subfolders in the same directory as the .gitignore file.
    /*
    # Do not blacklist the .gitignore file.
    !.gitignore
    
    # Now whitelist certain files.
    # For files in subfolders, some hoops must be jumped through (stackoverflow.com/a/16318111/4900327):
    
    ## Whitelisting files in /etc/ folder:
    # Whitelist the /etc/ folder (the git repo folder is whitelisted always)
    !/etc/
    # Blacklist all files in /etc/ folder.
    /etc/*
    # Whitelist specific file(s) in /etc/ folder.
    !/etc/crontab
    
    
    ## Whitelisting files in /etc/default/ folder:
    # /etc/ is already whitelisted, and its contents blacklisted.
    # Whitelist /etc/default/ folder.
    !/etc/default/
    # Blacklist all files in /etc/default/ folder.
    /etc/default/*
    # Whitelist specific file(s) in /etc/default/ folder.
    !/etc/default/tlp
    
    
    ## Whitelisting files in /home/USERNAME/ folder:
    # Whitelist /home/ folder.
    !/home/
    # Blacklist all files in /home/ folder.
    /home/*
    # Whitelist /home/USERNAME/ folder.
    !/home/USERNAME/
    # Blacklist all files in /home/USERNAME/ folder.
    /home/USERNAME/*
    # Whitelist specific file(s) in /home/USERNAME/ folder
    !/home/USERNAME/.bash_profile
    !/home/USERNAME/.bashrc
    
  • 转到/并运行git init .到目前为止,我无法使用link mentioned by @Ravexina.git/文件夹存储在另一个目录中。

  • 运行git add .git status。您应该获得Git跟踪的所有设置文件的列表。

    If you used the above `.gitignore`, it should track `/etc/crontab`, `/etc/default/tlp`, `/home/USERNAME/.bash_profile`, and `/home/USERNAME/.bashrc`.
    
  • git commit -m "Initial settings files"提交。

  • 您可以使用git log -p -- path/to/filegitk path/to/file跟踪更改。有关此here的更多讨论。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10646.html,未经允许,请勿转载。