Git和GitHub容易被混为一谈。

Git是版本控制软件,它维护一个仓库并包含git命令,github则是一个在线托管git仓库的网站。


恢复历史修改

如果引入了错误或者不小心删除了某个文件,你就需要使用源代码的早期版本。版本控制系统可以撤销或者回滚工作副本,使其恢复到早期提交的内容。

需要注意的是,版本控制系统只向前添加信息。即使从仓库中删除了一个文件,Git也会记住这次变更,以便日后恢复。回滚一个变更实际上是添加一个新的变更,该变更将文件的状态设置为先前提交的状态。

撤销未提交的本地修改:

如果对一个文件进行了未提交的修改,但想把它恢复到最新提交的版本,可以运行gitrestore<文件名>。

取消暂存的文件:

如果运行git add命令将一个修改过的文件暂存后,又想将其从暂存区中移除,避免下次被提交,可以运行git restore --staged<文件名>来取消暂存。

回滚近期的提交:

假设你做了几次无用的提交,想从之前一次的提交重新开始,需要撤销特定数量的最近几次提交,比如想撤销3次,可以使用gitrevert-n HEAD~3..HEAD命令。你可以用任何数字来替换3。

回滚到单个文件的某次提交:

因为提交是记录整个版本的状态,而非单个文件的状态,所以如果想回滚单个文件的修改,需要使用不同的命令。

重写提交历史:

如果你不小心提交了一个包含敏感信息的文件,比如其中包含密码、API密钥或信用卡号码,仅仅删除这些信息并重新提交是不够的。任何有权限访问仓库的人,无论是在你的计算机,上还是远程克降的副本上,都可以回滚到包含这些信息的提交版本。

从版本库中删除这些信息使其无法恢复有点麻烦,——可以使用git filter-branch命令,或者更好的选择是使用BFGRepo-Cleaner工具。

对于这个问题,最简单的预防措施是用一个secrets.txt、confidential.py或类似的文件来存放敏感的个人信息,并将其添加到.gitignore中,这样就不会意外地提交到仓库中。