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: 
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
> 
> 
>
There is a great summary of forking on [GitHub](https://help.github.com/articles/fork-a-repo/), but essentially you are creating a copy of their repo so you can make your own changes to it without affecting the source repo. 

This means you can build upon what someone else has done but alter it to your own ends.