Git Download Repository Example
1. Introduction
In this post, we feature a comprehensive Git Download Repository Example. Git is an open source distributed version control system designed to handle everything from small to large projects with speed and efficiency. It was first released on 12-15-2005. There are lots of Git Hosting Services available today. GitHub is one of the most popular ones. In this article, I will demonstrate three ways to download a repository from GitHub. The three ways are:
- Git clone command
- Download via
GitHub - IDE with Git Support
2. Technologies and Tools Used
The technologies and tools used in this article are:
- Git 2.16.*
- Eclipse Mars
- IntelliJ IDEA 14.*
- GitHub
3. Git Clone Command
If you have not yet installed Git, click here to do so. Git clone command is used to clone a repository from one location to another. Here is the syntax of the clone command:
git clone
git clone [--template=<template_directory>] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o <name>] [-b <name>] [-u <upload-pack>] [--reference <repository>] [--dissociate] [--separate-git-dir <git dir>] [--depth <depth>] [--[no-]single-branch] [--no-tags] [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules] [--jobs <n>] [--] <repository> [<directory>]
Please click here for more details about the clone command. In this step, we will clone a repository from https://github.com/maryzheng01/Deadlock-demo:
- Navigate to
C:\Users\shu.shan\GIT_WORK - Enter
git clone https://github.com/maryzheng01/Deadlock-demo
Commands Outputs
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\shu.shan>cd \
C:\>cd GIT_WORK\
C:\GIT_WORK>dir
Volume in drive C is OSDisk
Volume Serial Number is 3A10-C6D4
Directory of C:\GIT_WORK
05/19/2018 08:05 AM <DIR> .
05/19/2018 08:05 AM <DIR> ..
05/16/2018 03:04 PM <DIR> change-saints
02/09/2018 10:31 AM <DIR> rest-service-springboot-archetype
02/09/2018 11:31 AM <DIR> rest-service-template
0 File(s) 0 bytes
5 Dir(s) 59,034,894,336 bytes free
C:\GIT_WORK>git clone https://github.com/maryzheng01/Deadlock-demo.git
Cloning into 'Deadlock-demo'...
remote: Counting objects: 110, done.
remote: Compressing objects: 100% (38/38), done.
remote: Total 110 (delta 14), reused 50 (delta 4), pack-reused 50
Receiving objects: 100% (110/110), 19.31 KiB | 988.00 KiB/s, done.
Resolving deltas: 100% (22/22), done.
C:\GIT_WORK>dir
Volume in drive C is OSDisk
Volume Serial Number is 3A10-C6D4
Directory of C:\GIT_WORK
05/31/2018 12:37 PM <DIR> .
05/31/2018 12:37 PM <DIR> ..
05/16/2018 03:04 PM <DIR> change-saints
05/31/2018 12:37 PM <DIR> Deadlock-demo
02/09/2018 10:31 AM <DIR> rest-service-springboot-archetype
02/09/2018 11:31 AM <DIR> rest-service-template
0 File(s) 0 bytes
6 Dir(s) 59,034,976,256 bytes free
C:\GIT_WORK>The clone command downloaded a zip file to C:\Users\shu.shan\GIT_WORK\Deadlock-demo which contains all the files in the repository hosted at https://github.com/maryzheng01/Deadlock-demo.
4. Download via GitHub
GitHub is a popular web-based Git repository hosting service. GitHub has three ways to download a repository:
- Download via the GitHub web site
- Download via the GitHub desktop application
- Download via the GitHub API
4.1 GitHub Web site
GitHub web site provides a button to download a repository. In this step, I will download a repository through the GitHub web site:
- Open a browser and go to https://github.com/maryzheng01/Deadlock-demo.
- Select the desired branch, e.g. master.
- Click
Clone or download, and then clickDownload ZIP.
It will download a zip file which contains all the files in the repository.
4.2 GitHub Desktop Application
GitHub desktop application allows users to download/synchronize a repository. In this step, I will show you how to clone a repository from GitHub desktop application.
- Open GitHub desktop application
- Login with your GitHub credential
- Click
Cloneand enter the repository location
GitHub desktop also provides a Pull request button to download any differences from a remote repository after the initial download. The user just need to select the branch name and click the Send pull request button.
4.3 GitHub API
GitHub provides a content API to download the repository’s content. In this example, I will show you how to download from a GitHub repository.
Based on the GitHub API definition, the repository’s URL is defined as https://api.github.com/users/{username}/repos. For this example, I will download my repository from https://api.github.com/users/maryzheng01/repos because my GitHub user name is maryzheong01.
Open a browser and navigate to https://api.github.com/users/maryzheng01/repos. It will return a Json array with the repository’s information. I only have one repository, so we will only see one repository. We will capture the repository’s content_url from the highlighted row.
Maryzheng01 Repo Response Data
[
{
"id": 33957535,
"node_id": "MDEwOlJlcG9zaXRvcnkzMzk1NzUzNQ==",
"name": "Deadlock-demo",
"full_name": "maryzheng01/Deadlock-demo",
"owner": {
"login": "maryzheng01",
"id": 11510587,
"node_id": "MDQ6VXNlcjExNTEwNTg3",
"avatar_url": "https://avatars2.githubusercontent.com/u/11510587?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/maryzheng01",
"html_url": "https://github.com/maryzheng01",
"followers_url": "https://api.github.com/users/maryzheng01/followers",
"following_url": "https://api.github.com/users/maryzheng01/following{/other_user}",
"gists_url": "https://api.github.com/users/maryzheng01/gists{/gist_id}",
"starred_url": "https://api.github.com/users/maryzheng01/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/maryzheng01/subscriptions",
"organizations_url": "https://api.github.com/users/maryzheng01/orgs",
"repos_url": "https://api.github.com/users/maryzheng01/repos",
"events_url": "https://api.github.com/users/maryzheng01/events{/privacy}",
"received_events_url": "https://api.github.com/users/maryzheng01/received_events",
"type": "User",
"site_admin": false
},
"private": false,
"html_url": "https://github.com/maryzheng01/Deadlock-demo",
"description": "initial check in",
"fork": false,
"url": "https://api.github.com/repos/maryzheng01/Deadlock-demo",
"forks_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/forks",
"keys_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/teams",
"hooks_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/hooks",
"issue_events_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/issues/events{/number}",
"events_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/events",
"assignees_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/assignees{/user}",
"branches_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/branches{/branch}",
"tags_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/tags",
"blobs_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/statuses/{sha}",
"languages_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/languages",
"stargazers_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/stargazers",
"contributors_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contributors",
"subscribers_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/subscribers",
"subscription_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/subscription",
"commits_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/{+path}",
"compare_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/merges",
"archive_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/downloads",
"issues_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/issues{/number}",
"pulls_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/pulls{/number}",
"milestones_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/milestones{/number}",
"notifications_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/labels{/name}",
"releases_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/releases{/id}",
"deployments_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/deployments",
"created_at": "2015-04-14T21:17:27Z",
"updated_at": "2018-05-19T13:48:08Z",
"pushed_at": "2018-05-24T21:35:45Z",
"git_url": "git://github.com/maryzheng01/Deadlock-demo.git",
"ssh_url": "git@github.com:maryzheng01/Deadlock-demo.git",
"clone_url": "https://github.com/maryzheng01/Deadlock-demo.git",
"svn_url": "https://github.com/maryzheng01/Deadlock-demo",
"homepage": null,
"size": 21,
"stargazers_count": 0,
"watchers_count": 0,
"language": "Java",
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"open_issues_count": 0,
"license": null,
"forks": 0,
"open_issues": 0,
"watchers": 0,
"default_branch": "master"
}
]Navigate to the Deadlock-demo‘s content_url: https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/. It will display an array of objects. The highlighted rows contain the url to download the file and content url to get encoded content.
Maryzheng01 Content API Response
[
{
"name": ".gitattributes",
"path": ".gitattributes",
"sha": "bdb0cabc87cf50106df6e15097dff816c8c3eb34",
"size": 378,
"url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/.gitattributes?ref=master",
"html_url": "https://github.com/maryzheng01/Deadlock-demo/blob/master/.gitattributes",
"git_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/bdb0cabc87cf50106df6e15097dff816c8c3eb34",
"download_url": "https://raw.githubusercontent.com/maryzheng01/Deadlock-demo/master/.gitattributes",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/.gitattributes?ref=master",
"git": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/bdb0cabc87cf50106df6e15097dff816c8c3eb34",
"html": "https://github.com/maryzheng01/Deadlock-demo/blob/master/.gitattributes"
}
},
{
"name": ".gitignore",
"path": ".gitignore",
"sha": "3599352fbd68470467949b5c7e6ad64a7be59cb3",
"size": 631,
"url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/.gitignore?ref=master",
"html_url": "https://github.com/maryzheng01/Deadlock-demo/blob/master/.gitignore",
"git_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/3599352fbd68470467949b5c7e6ad64a7be59cb3",
"download_url": "https://raw.githubusercontent.com/maryzheng01/Deadlock-demo/master/.gitignore",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/.gitignore?ref=master",
"git": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/3599352fbd68470467949b5c7e6ad64a7be59cb3",
"html": "https://github.com/maryzheng01/Deadlock-demo/blob/master/.gitignore"
}
},
{
"name": "README.md",
"path": "README.md",
"sha": "12caff302f3689c40e2bd11104e317aafb85bb1b",
"size": 277,
"url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/README.md?ref=master",
"html_url": "https://github.com/maryzheng01/Deadlock-demo/blob/master/README.md",
"git_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/12caff302f3689c40e2bd11104e317aafb85bb1b",
"download_url": "https://raw.githubusercontent.com/maryzheng01/Deadlock-demo/master/README.md",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/README.md?ref=master",
"git": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/12caff302f3689c40e2bd11104e317aafb85bb1b",
"html": "https://github.com/maryzheng01/Deadlock-demo/blob/master/README.md"
}
},
{
"name": "pom.xml",
"path": "pom.xml",
"sha": "653adfab73fda0d7a88a6645b750a6060048ea85",
"size": 2102,
"url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/pom.xml?ref=master",
"html_url": "https://github.com/maryzheng01/Deadlock-demo/blob/master/pom.xml",
"git_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/653adfab73fda0d7a88a6645b750a6060048ea85",
"download_url": "https://raw.githubusercontent.com/maryzheng01/Deadlock-demo/master/pom.xml",
"type": "file",
"_links": {
"self": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/pom.xml?ref=master",
"git": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/653adfab73fda0d7a88a6645b750a6060048ea85",
"html": "https://github.com/maryzheng01/Deadlock-demo/blob/master/pom.xml"
}
},
{
"name": "src",
"path": "src",
"sha": "365efa9c6603654aa7b2a03ac983a873eb28a0e5",
"size": 0,
"url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/src?ref=master",
"html_url": "https://github.com/maryzheng01/Deadlock-demo/tree/master/src",
"git_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/trees/365efa9c6603654aa7b2a03ac983a873eb28a0e5",
"download_url": null,
"type": "dir",
"_links": {
"self": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/src?ref=master",
"git": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/trees/365efa9c6603654aa7b2a03ac983a873eb28a0e5",
"html": "https://github.com/maryzheng01/Deadlock-demo/tree/master/src"
}
}
]- lines 7, 23, 43, 55, 71: We can use the
urlto get the file content as abase64encoded value. - lines 10, 26, 42, 58, 74: We can use
download_urlto download a file. - lines 11, 27, 43, 59, 75: Shows whether or not the object is a file or a directory.
Navigate to the download_url: https://raw.githubusercontent.com/maryzheng01/Deadlock-demo/master/README.md. It will display the file content.
README.md
This is a Maven project to demo: 1) how to use Spring JDBC XML configuration to connect to two data sources. 2) how to use the Transaction manager to avoid the deadlock. 2.1) Guard the Transaction at each Dao method level 2.2) Guard the Transaction at the service level
Navigate to the url: https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/README.md?ref=master. It will display the file content as a base64 encoded value.
README Encoded Content
{
"name": "README.md",
"path": "README.md",
"sha": "12caff302f3689c40e2bd11104e317aafb85bb1b",
"size": 277,
"url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/README.md?ref=master",
"html_url": "https://github.com/maryzheng01/Deadlock-demo/blob/master/README.md",
"git_url": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/12caff302f3689c40e2bd11104e317aafb85bb1b",
"download_url": "https://raw.githubusercontent.com/maryzheng01/Deadlock-demo/master/README.md",
"type": "file",
"content": "ClRoaXMgaXMgYSBNYXZlbiBwcm9qZWN0IHRvIGRlbW86CjEpIGhvdyB0byB1\nc2UgU3ByaW5nIEpEQkMgWE1MIGNvbmZpZ3VyYXRpb24gdG8gY29ubmVjdCB0\nbyB0d28gZGF0YSBzb3VyY2VzLgoyKSBob3cgdG8gdXNlIHRoZSBUcmFuc2Fj\ndGlvbiBtYW5hZ2VyIHRvIGF2b2lkIHRoZSBkZWFkbG9jay4KICAgMi4xKSBH\ndWFyZCB0aGUgVHJhbnNhY3Rpb24gYXQgZWFjaCBEYW8gbWV0aG9kIGxldmVs\nCiAgIDIuMikgR3VhcmQgdGhlIFRyYW5zYWN0aW9uIGF0IHRoZSBzZXJ2aWNl\nIGxldmVsCg==\n",
"encoding": "base64",
"_links": {
"self": "https://api.github.com/repos/maryzheng01/Deadlock-demo/contents/README.md?ref=master",
"git": "https://api.github.com/repos/maryzheng01/Deadlock-demo/git/blobs/12caff302f3689c40e2bd11104e317aafb85bb1b",
"html": "https://github.com/maryzheng01/Deadlock-demo/blob/master/README.md"
}
}5. IDE with Git Support
Common IDEs, such as Visual Studio, Eclipse, NetBeans, IntelliJ IDEA, etc, support Git from the box. In this step, we will download a repository from https://github.com/maryzheng01/Deadlock-demo via Eclipse and IntelliJ IDEA.
5.1 IntelliJ IDEA
IntelliJ IDEA supports Git. There are only few steps to download a repository:
- Open
IntelliJ IDEA. - Select
Gitfrom the drop down list ofCheck out from Version Control.
Figure 1 IntelliJ Download 1 - Enter the
Git Repository URLand theParent Directory. - Click
Clone. - Verify that the project is downloaded to the location specified.
5.2 EGit
Eclipse supports Git. There are two basic steps to download a repository:
- Open
Eclipseas aGit Perspective. - Click the icon to clone from a remote repository.
Please check out my other article here for more details.
6. Summary
In this example, I showed how to download a remote repository hosted at GitHub via the Git clone command, Eclipse, IntelliJ IDEA, GitHub web sites, GitHub desktop application, and GitHub API. Please note that Git clone command, Eclipse, and IntelliJ IDEA can download repositories from any Git Hosting services.






