Question: Forking on Github or Bitcket creates a repo's copy under your own account. 

Does this mean that forking is a server-side action? I was unable to find "fork command" inside Git.

If it's not a server-side action, what are the steps to fork a local Git repository with full history and tags?

Answer: 
*Forking* is not a technical operation but a process which happens in software development:

> 
> [...] a project fork happens when developers take a copy of source code from one software package and start independent development on it, creating a distinct and separate piece of software.
> 
> 
> 

*source: <http://en.wikipedia.org/wiki/Fork_%28software_development%29>*

Therefore, strictly speaking there isn't the notion of *forking* in git. That said, in order to fork a project that's in a Git repository, you have to `git-clone` it.
The representation of **Fork** in Github is a git configuration with some server side logics for **Pull Requests** features.

**Commands to simulate a github fork in git commands:**

> 
> git clone externalrepo
> 
> 
> git remote rename origin external
> 
> 
> create a empty repositories (could be any server, but when you use *github fork* is create in your account)
> 
> 
> git remote add origin yourownrepo
> 
> 
> git push origin
> 
> 
> 

This is the basic git commands to simulate a fork, and **yes a fork live in a server** because a git only local is useless.

The extra feature from github is know that **your repo** is a fork of the **original repo** to automatically make pull request easy.

**Extra information**

One pull request is only a notification to **original repository** to see a specific branch on **your repo** and integrate:

You can simulate a pull request acceptance with the next git commands:

> 
> git add remote pr11111 yourownrepo
> 
> 
> git checkout originalbranch //to be integrated
> 
> 
> git pull pr11111 yourbranch //the branch requested to pull
> 
> 
> git merge pr11111 yourbranch
> 
> 
>