如何使用Git跟踪单个文件的版本?

ico*_*ast 9 git

比方说,我有一个单一的文件,foo.txt的,我想使用Git来管理,我希望它移动到自己的目录出来的(比方说)/用户/我/文档,其中也有一个大量其他文件我不想包含在foo.txt的回购中.这可能吗?

我尝试创建一个裸仓库(所以它不会被命名为.git):

git init --bare .foo.txt
Run Code Online (Sandbox Code Playgroud)

并计划通过在info/exclude文件中添加这样的内容来排除除foo.txt之外的所有内容:

*
!foo.txt
Run Code Online (Sandbox Code Playgroud)

但我遇到的问题是我甚git status至无法做到,因为似乎没有办法传递.git目录的非标准替换.

使用普通的.git目录是行不通的,因为它会限制我对这个文件进行版本控制,或者强迫我在同一个repo中包含任何其他文件,并且我希望能够在其目录中对其他文件进行版本化自己的回购.

我意识到这不是Git的用例,但由于它是我已经熟悉的强大工具,我更愿意使用它而不是别的东西,如果有办法那样做的话.

wjl*_*wjl 6

如果你像这样运行git,你可以完全按照自己的意愿行事:

git --git-dir=.foo.txt --work-tree=. status
Run Code Online (Sandbox Code Playgroud)

将第一部分别名,git-foo然后进入比赛.

  • `函数版本() { 前缀='.'; 文件名=“$1”;转移; git --git-dir="${前缀}${文件名}" --work-tree=. “$@”;}` (2认同)

Mar*_*nor 5

如何使用 .gitignore 文件创建应编辑的文件的过滤器。此解决方案避免了 Windows 上不支持的硬链接。

例如以下文件:

$ cat .gitignore
*
!data.xml
Run Code Online (Sandbox Code Playgroud)

配置 git 忽略除“data.xml”之外的所有文件。