我想使用 git 来保留一些文本文件(源但可以是配置文件或任何内容 - Q 并不特定于软件开发)的简单更改历史记录。
我曾经使用 RCS 来实现这一点,它很简单,只需每天运行一项任务,找到我所有相关的文本文件(例如cd /some/where; find . -name "*.foo" ...
)并将它们全部签入(类似于ci -q -mbackup -l filename
)——ci
如果文件未更改,则基本上不执行任何操作。旧版本(或更准确地说,可以通过 rcs 重建旧版本的差异)保存在本地文件系统/磁盘中的 RCS 目录中。
稍后,我可以运行rlog filename
查看感兴趣的文件被更改的日期以及更改的行数。rcsdiff
如果需要,我可以使用查看所做的确切更改。我可以使用 co 来恢复更改。
我不需要远程存储库、同步存储库、与其他人合作、记录更改的原因、分支、将文件分组、在文件组上标记版本号或发布号或除基本文件版本控制之外的任何其他东西(不使用 Windows 10 的内置功能,该功能需要外部磁盘,而我出于可移植性原因对此表示怀疑)。
我已经在 Windows 10 上安装了 git(因为 golang 使用 git 来获取库等,我自己不直接使用 git)所以...
有没有简单的以类似的简单方式使用 git 的方法?
答案1
当然。你需要某种脚本,将 cd 放入/some/where
,然后运行类似这样的操作
git add .
git commit -m "some message"
然后您可以使用它git log $filename
来查看它的历史记录。git log
它不会向您显示更改的数字,但您可以编写提交消息的生成脚本来反映这一点。并向git diff
您显示确切的更改并git revert
进行还原。
答案2
涵盖问题中项目的一些简单等价物,并假设您拥有所有感兴趣的文件/some/where
一次初始化:
cd /some/where
git init
提交foo
自上次提交以来更改的所有文件:
cd /some/where
git add "*.foo"
git commit -m "commit message about today's foo files"
列出特定文件的最近三次提交及其摘要统计信息:
cd /some/where/else
git log -3 --shortstat alphabet.foo
给出输出中的两个提交哈希git log
,查看它们之间的差异
cd /some/where/else
git diff ac132f..be8d5e alphabet.foo
答案3
也许工具不对……git 用于处理以某种协调方式更改的文件集合。查看另一个一次处理一个文件的 VCS,新加坡铁路公司。非常新,这意味着(某种程度上)与 git 配合使用,它使用相同的快速导入/快速导出格式,并(重新)使用 git 的一些全局或用户配置。甚至在内部使用 RCS 格式 ;-)