我不想在git中蠢蠢欲动,我想像他们在FaceBook上说的那样"快速行动并打破局面".实际上,我认为这几乎是版本控制的重点.我真正需要注意什么?
我猜git rm,尤其是-r可能很危险.
什么时候分支,什么导致覆盖?
一般来说,很难在 git中导致数据丢失.即使在运行从历史记录中删除提交或删除分支的命令时,Git也几乎从未真正删除已经检入存储库的任何内容.
您唯一需要担心的是删除尚未签入git的文件的命令.通常,git将需要这些命令的--force(-f)或--hard标志.
以下是潜在危险命令的快速列表以及使用它们时需要注意的事项:
可以永久删除未提交给git的数据:
git rm -f - 可以删除尚未签入的文件git reset --hard - 将删除尚未签入git的更改git clean -f - 将删除git未跟踪的文件git checkout /path/to/file - 可以将未签入的更改还原为gitgit checkout <rev> -f - 可以覆盖未签入git的更改rm -rf .git- 不要删除你的.git目录!这就是存储您所有本地历史的内容.可以删除远程存储库上的数据(可逆,但您可能没有恢复远程存储库上的提交所需的访问级别):
git push -f - 从远程存储库中的分支中删除历史记录git push <remote> :<branch>- 或git push <remote> --delete <branch>- 删除远程分支可以永久删除原本可以恢复的已删除数据(类似于清空操作系统上的垃圾箱):
git prune - 永久删除无法从任何分支访问的提交git gc- 永久删除无法从任何分支访问的旧提交可以删除本地提交(它们很容易恢复):
git reset <revision>- 可以从分支中删除历史记录(它可以在本地恢复,但大约两周左右,除非你运行git prune)git branch -D <branch> - 删除尚未合并的分支(可在本地恢复)git branch -f <branch> <rev> - 可以从分支中删除历史记录(可在本地恢复)git rm并不是那么危险,因为您可以在之后从以前的提交中检索文件。
作为一般经验法则,请注意该-f选项:它强制 Git 做一些它不想做的事情。(例如:branch -f或push -f)