git意外地跟踪了配置文件
以以下场景为例:git意外地跟踪了配置文件,git,version-control,Git,Version Control,以以下场景为例: 您意外地跟踪并提交了一个配置文件 每个开发环境都应该有自己特定的配置文件,因此在git add 你很长一段时间都没有意识到 犯罪 如果您重置或选择回C、D或E,它将覆盖配置文件 是否有必要通过在配置文件上应用B提交来重写C-E?如果配置文件应该只是取消跟踪,最好在取消跟踪配置文件的基础上进行提交,将其添加到gitignore等。如果配置有敏感信息,在这种情况下,必须将其从repo的任何提交中删除,除了修改历史记录,您别无选择(GitHub的这个帮助页面讨论了如何做到这一点-
- 您意外地跟踪并提交了一个配置文件
- 每个开发环境都应该有自己特定的配置文件,因此在
git add
- 你很长一段时间都没有意识到
是否有必要通过在配置文件上应用B提交来重写C-E?如果配置文件应该只是取消跟踪,最好在取消跟踪配置文件的基础上进行提交,将其添加到gitignore等。如果配置有敏感信息,在这种情况下,必须将其从repo的任何提交中删除,除了修改历史记录,您别无选择(GitHub的这个帮助页面讨论了如何做到这一点-)
由于Git的性质和要求,您不能对提交进行更改,使其看起来是相同的提交。如果作者都是您,您不需要保留受影响提交的日期(所有提交都是a-E),那么这几乎是很简单的,另一种方法需要更多的时间 根据您的图片,我将添加修订版F作为错误前的提交。假设你在“大师”分支上
git log --oneline master~6..master
应该给你看那些修订
git branch corrected master~5 # this is F, master~0 is A i.e. the branch tip
git config advice.detachedhead false # just to get it to stop blabbing at you
# make corrected commit E
git checkout master~4
git rm --cached yourconfigfile
echo ref: refs/heads/corrected >.git/HEAD
git cat-file -p master~4 | sed 1,/^$/d | git commit -m-
# make corrected commit D
git checkout master~3
git rm --cached yourconfigfile
echo ref: refs/heads/corrected >.git/HEAD
git cat-file -p master~3 | sed 1,/^$/d | git commit -m-
# ... repeat for C, B, and A
最后,
echo ref: refs/heads/master > .git/config
你完成了。保存作者/日期信息需要从标题
GIT cat file-p
中设置GIT{author,COMMITTER}{NAME,EMAIL,date},如果您需要,我会为您制作一个sed。谢谢您的评论。您将如何修改历史记录?听起来像是使用了可怕的rebase
命令——我是git新手,所以举个例子就好了。
echo ref: refs/heads/master > .git/config