When using Unprotect, we can overwrite a functions definition:
Unprotect[Sqrt]
Sqrt[x_]="blahblah"
Protect[Sqrt]
Once this is done, can we revert to the built-in version of Sqrt?
When using Unprotect, we can overwrite a functions definition:
Unprotect[Sqrt]
Sqrt[x_]="blahblah"
Protect[Sqrt]
Once this is done, can we revert to the built-in version of Sqrt?
Unprotect[Sqrt];
Sqrt[x_] = "blahblah";
Protect[Sqrt];
Sqrt[2]
blahblah
Unprotect[Sqrt];
ClearAll[Sqrt];
Protect[Sqrt];
Sqrt[2]

If you want to keep the previous definition and use built-in function in further operation, you can use ParallelEvaluate
Unprotect[Sqrt];
Sqrt[x_] = "blahblah";
Protect[Sqrt];
Sqrt[4]
(*"blahblah"*)
First@ParallelEvaluate[Sqrt[4]]
(*2*)