如何从 git 存储库中删除文件,但只删除历史记录中的某个时间点?
How to remove file from git repository but only up to a certain point in history?
我知道如何使用 filter-branch 将文件完全排除在存储库历史记录之外。发生的事情是我在一些提交之前的文件中有一些敏感信息,但我已经删除了它并且我想从那个安全提交开始保留文件。
我可以吗?还是我必须做一些克隆技巧?
我认为 BFG Repo-Cleaner 正是您要找的。
您可以使用它来替换或删除整个历史记录中工作树中包含的敏感信息(例如密码)的存储库。这是他们 documentation:
的一个例子
bfg --replace-text passwords.txt /path/to/repository
passwords.txt
文件将包含一系列字符串以匹配它们应替换为的值。例如:
password # Replaces the string 'password' with '***REMOVED***' (default)
password==>DELETED # Replaces the string 'password' with 'DELETED'
password==> # Replaces the string 'password' with an empty string
regex:password.+==> # Replaces using a regular expression with an empty string
与 git-filter-branch
一样,这是一个 rewrite history 操作,因此适用通常的免责声明。
我知道如何使用 filter-branch 将文件完全排除在存储库历史记录之外。发生的事情是我在一些提交之前的文件中有一些敏感信息,但我已经删除了它并且我想从那个安全提交开始保留文件。
我可以吗?还是我必须做一些克隆技巧?
我认为 BFG Repo-Cleaner 正是您要找的。
您可以使用它来替换或删除整个历史记录中工作树中包含的敏感信息(例如密码)的存储库。这是他们 documentation:
的一个例子bfg --replace-text passwords.txt /path/to/repository
passwords.txt
文件将包含一系列字符串以匹配它们应替换为的值。例如:
password # Replaces the string 'password' with '***REMOVED***' (default)
password==>DELETED # Replaces the string 'password' with 'DELETED'
password==> # Replaces the string 'password' with an empty string
regex:password.+==> # Replaces using a regular expression with an empty string
与 git-filter-branch
一样,这是一个 rewrite history 操作,因此适用通常的免责声明。