Suppose that I would like to implement a fix to a project of someone else. That project resides on GitHub.
I could create a fork on GitHub and implement the fix.
If you just want to track changes, first make an empty repository in GitLab (or whatever else you may be using) and clone it to your computer.
Then add the GitHub project as the "upstream" remote with:
git remote add upstream https://github.com/user/repo
Now you can fetch and pull from the upstream should there be any changes. (You can also push or merge to it if you have access rights.)
git pull upstream master
Finally, push back to your own GitLab repository:
git push origin master
If you don't want to manually pull upstream/push origin, GitLab offers a mirroring ability in Settings => Repository => Mirroring repositories.
Instead of forking, you can import any publicly available GitHub repository using only the web interface:
Used this technique recently, and it works on any public repository even without a GitHub account. See this GitLab docs page for the source of info.
The browser-only way:
Forking a private github repository is possible.
^ I've just done this with a private repo on github, imported successfully (inc branches etc). Imported project is automatically kept private ;)