赞
踩
原生nginx只支持http正向代理.
为了nginx支持https正向代理,可以打ngx_http_proxy_connect_module-master补丁+ ssl模块支持.
win10真机 + debian8.8虚拟机
root@localhost:~# cat /etc/network/interfaces
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.11.200
netmask 255.255.255.0
gateway 192.168.11.2
reboot
su - root
mkdir -p /home/test_nginx/
cd /home/test_nginx/
ngx_http_proxy_connect_module-master补丁支持的最新的nginx版本为nginx-1.15.2
wget http://nginx.org/download/nginx-1.15.2.tar.gz
tar -xzvf ./nginx-1.15.2.tar.gz
https://github.com/chobits/ngx_http_proxy_connect_module
将下载好的ngx_http_proxy_connect_module-master.zip上传到 /home/test_nginx/
aptitude install unzip
unzip ./ngx_http_proxy_connect_module-master.zip
cd /home/test_nginx/nginx-1.15.2
./configure --help | grep ssl
aptitude update
aptitude search PCRE
aptitude install libpcre3 libpcre3-dev
aptitude search ssl
aptitude install libssl-dev
./configure --add-module=/home/test_nginx/ngx_http_proxy_connect_module-master --with-http_ssl_module
Configuration summary + using system PCRE library + using system OpenSSL library + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx modules path: "/usr/local/nginx/modules" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp"
注意 nginx-1.15.2对应的补丁为proxy_connect_rewrite_1015.patch,可以先看ngx_http_proxy_connect_module-master的readme
patch -d /home/test_nginx/nginx-1.15.2/ -p 1 < /home/test_nginx/ngx_http_proxy_connect_module-master/patch/proxy_connect_rewrite_1015.patch
补丁的结果很干净。
如果补丁不对,会由错误提示信息.
patching file src/http/ngx_http_core_module.c
patching file src/http/ngx_http_parse.c
patching file src/http/ngx_http_request.c
patching file src/http/ngx_http_request.h
patching file src/http/ngx_http_variables.c
make
make install
root@localhost:/home/test_nginx/nginx-1.15.2# /usr/local/nginx/sbin/nginx -h nginx version: nginx/1.15.2 Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -T : test configuration, dump it and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /usr/local/nginx/) -c filename : set configuration file (default: conf/nginx.conf) -g directives : set global directives out of configuration file
root@localhost:/home/test_nginx/nginx-1.15.2# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.15.2
built by gcc 4.9.2 (Debian 4.9.2-10)
built with OpenSSL 1.0.1t 3 May 2016
TLS SNI support enabled
configure arguments: --add-module=/home/test_nginx/ngx_http_proxy_connect_module-master --with-http_ssl_module
find / -name 'nginx'
root@localhost:/home/test_nginx/nginx-1.15.2# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
这个配置文件就用ngx_http_proxy_connect_module-master自带的配置文件
/usr/local/nginx/sbin/nginx -s stop
cat /usr/local/nginx/conf/nginx.conf
lsof -i:8080
root@localhost:/home/test_nginx/nginx-1.15.2# cat /usr/local/nginx/conf/nginx.conf # @file /usr/local/nginx/conf/nginx.conf worker_processes 1; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; # dns resolver used by forward proxying resolver 8.8.8.8; # forward proxy for CONNECT request proxy_connect; proxy_connect_allow 443 563; proxy_connect_connect_timeout 10s; proxy_connect_read_timeout 10s; proxy_connect_send_timeout 10s; # forward proxy for non-CONNECT request location / { proxy_pass http://$host; proxy_set_header Host $host; } } }
root@localhost:/home/test_nginx/nginx-1.15.2# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
root@localhost:/home/test_nginx/nginx-1.15.2# /usr/local/nginx/sbin/nginx -s stop
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
root@localhost:/home/test_nginx/nginx-1.15.2# /usr/local/nginx/sbin/nginx
aptitude search curl
aptitude install curl
curl https://github.com/ -v -x 192.168.11.200:8080 >& /home/test_nginx.log
查看日志,可以看到https正向代理已经成功
* Hostname was NOT found in DNS cache * Trying 192.168.11.200... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 192.168.11.200 (192.168.11.200) port 8080 (#0) * Establish HTTP proxy tunnel to github.com:443 > CONNECT github.com:443 HTTP/1.1 > Host: github.com:443 > User-Agent: curl/7.38.0 > Proxy-Connection: Keep-Alive > 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0< HTTP/1.1 200 Connection Established < Proxy-agent: nginx < * Proxy replied OK to CONNECT request * successfully set certificate verify locations: * CAfile: none CApath: /etc/ssl/certs * SSLv3, TLS handshake, Client hello (1): } [data not shown] * SSLv3, TLS handshake, Server hello (2): { [data not shown] * SSLv3, TLS handshake, CERT (11): { [data not shown] * SSLv3, TLS handshake, Server key exchange (12): { [data not shown] * SSLv3, TLS handshake, Server finished (14): { [data not shown] * SSLv3, TLS handshake, Client key exchange (16): } [data not shown] * SSLv3, TLS change cipher, Client hello (1): } [data not shown] * SSLv3, TLS handshake, Finished (20): } [data not shown] * SSLv3, TLS change cipher, Client hello (1): { [data not shown] * SSLv3, TLS handshake, Finished (20): { [data not shown] * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * Server certificate: * subject: businessCategory=Private Organization; 1.3.6.1.4.1.311.60.2.1.3=US; 1.3.6.1.4.1.311.60.2.1.2=Delaware; serialNumber=5157550; C=US; ST=California; L=San Francisco; O=GitHub, Inc.; CN=github.com * start date: 2018-05-08 00:00:00 GMT * expire date: 2020-06-03 12:00:00 GMT * subjectAltName: github.com matched * issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 Extended Validation Server CA * SSL certificate verify ok. > GET / HTTP/1.1 > User-Agent: curl/7.38.0 > Host: github.com > Accept: */* > < HTTP/1.1 200 OK < Date: Wed, 28 Nov 2018 11:12:35 GMT < Content-Type: text/html; charset=utf-8 < Transfer-Encoding: chunked * Server GitHub.com is not blacklisted < Server: GitHub.com < Status: 200 OK < Cache-Control: no-cache < Vary: X-PJAX < Set-Cookie: has_recent_activity=1; path=/; expires=Wed, 28 Nov 2018 12:12:35 -0000 < Set-Cookie: logged_in=no; domain=.github.com; path=/; expires=Sun, 28 Nov 2038 11:12:35 -0000; secure; HttpOnly < Set-Cookie: _gh_sess=V3M1eUZQK1QvSXozOUh4dE50Vm8vL21NWFZwbTdQMzdWZitpa3VxK1hFZm9tOTNJbVZYVUhFaFdtMHEwTUM3VnBiWkpJRjFMRWNITWtZN3c2b1AybXlHdjc3ZzlpUHNLNU9BdSs3YmZxbXlhRmhyWXZNY0ZFN2lMcXBxay94T0FwMmFyOUpSbkNtSDlkNzFDMmppSXhvMVR0OHN4REoyM3NCUEpEblUzOEdJc2UvRXhkSmQxVDlpdVVlMTRZVE1DTXNXVGJkVGRuNUFZUHZKVklJQk1TZz09LS1ZMkR1WU9NZTRnd000YzNIU3RIZ0RnPT0%3D--4be4facb8e3eeaa9be9a99c2eb5543044a8c6abd; path=/; secure; HttpOnly < X-Request-Id: e9423279-5ea2-481a-aead-ce7b2515a81b < Strict-Transport-Security: max-age=31536000; includeSubdomains; preload < X-Frame-Options: deny < X-Content-Type-Options: nosniff < X-XSS-Protection: 1; mode=block < Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin < Expect-CT: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors" 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0< Content-Security-Policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; manifest-src 'self'; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com < Vary: Accept-Encoding < X-GitHub-Request-Id: D276:1049:25AD1D1:35EE509:5BFE7822 < { [data not shown] <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://assets-cdn.github.com"> <link rel="dns-prefetch" href="https://avatars0.githubusercontent.com"> <link rel="dns-prefetch" href="https://avatars1.githubusercontent.com"> <link rel="dns-prefetch" href="https://avatars2.githubusercontent.com"> <link rel="dns-prefetch" href="https://avatars3.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link crossorigin="anonymous" media="all" integrity="sha512-lLo2nlsdl+bHLu6PGvC2j3wfP45RnK4wKQLiPnCDcuXfU38AiD+JCdMywnF3WbJC1jaxe3lAI6AM4uJuMFBLEw==" rel="stylesheet" href="https://assets-cdn.github.com/assets/frameworks-08fc49d3bd2694c870ea23d0906f3610.css" /> <link crossorigin="anonymous" media="all" integrity="sha512-Ny5v7zCiIV6M3ZihevvxYkJaQQritulmmljyShuDy19NhQt2ErB1HnelPvkN7U1cTTmO/h7MwNddq+cP64iEIw==" rel="stylesheet" href="https://assets-cdn.github.com/assets/github-cd2827e3284d3572368e5b2ea7e766f4.css" /> <link crossorigin="anonymous" media="all" integrity="sha512-PcJMPDRp7jbbEAmTk9kaL2kRQqg69QZ26WsZf07xsPyaipKsi3wVG0805PZNYXxotPDAliKKFvNSQPhD8fp1FQ==" rel="stylesheet" href="https://assets-cdn.github.com/assets/site-50c740d9290419d070dd6213a7cd03b5.css" /> <meta name="viewport" content="width=device-width"> <title>The world’s leading software development platform · GitHub</title> <meta name="description" content="GitHub brings together the world’s largest community of developers to discover, share, and build better software. From open source projects to private team repositories, we’re your all-in-one platform for collaborative development."> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta property="og:url" content="https://github.com"> <meta property="og:site_name" content="GitHub"> <meta property="og:title" content="Build software better, together"> <meta property="og:description" content="GitHub is where people build software. More than 28 million people use GitHub to discover, fork, and contribute to over 85 million projects."> <meta property="og:image" content="https://assets-cdn.github.com/images/modules/open_graph/github-logo.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1200"> <meta property="og:image" content="https://assets-cdn.github.com/images/modules/open_graph/github-mark.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <meta property="og:image" content="https://assets-cdn.github.com/images/modules/open_graph/github-octocat.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="620"> <link rel="assets" href="https://assets-cdn.github.com/"> <meta name="pjax-timeout" content="1000"> <meta name="request-id" content="D276:1049:25AD1D1:35EE509:5BFE7822" data-pjax-transient> <meta name="selected-link" value="/" data-pjax-transient> <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU"> <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA"> <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc"> <meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-dimension-request_id" content="D276:1049:25AD1D1:35EE509:5BFE7822" /><meta name="octolytics-dimension-region_edge" content="ap-southeast-1" /><meta name="octolytics-dimension-region_render" content="iad" /> <meta name="google-analytics" content="UA-3769691-2"> <meta class="js-ga-set" name="dimension1" content="Logged Out"> <meta name="hostname" content="github.com"> <meta name="user-login" content=""> <meta name="expected-hostname" content="github.com"> <meta name="js-proxy-site-detection-payload" content="ZmM4OTAwMTNkNTJmNDdlZWE4YzJlMDdhMWZjMGRhOWUxMmI4OTc4OTZiZjY4NTIxMmQxYjE0MzE0ZDc1MmJkOXx7InJlbW90ZV9hZGRyZXNzIjoiMjAzLjkzLjEyMS4yIiwicmVxdWVzdF9pZCI6IkQyNzY6MTA0OToyNUFEMUQxOjM1RUU1MDk6NUJGRTc4MjIiLCJ0aW1lc3RhbXAiOjE1NDM0MDM1NTUsImhvc3QiOiJnaXRodWIuY29tIn0="> <meta name="enabled-features" content="DASHBOARD_V2_LAYOUT_OPT_IN,EXPLORE_DISCOVER_REPOSITORIES,UNIVERSE_BANNER,MARKETPLACE_PLAN_RESTRICTION_EDITOR"> <meta name="html-safe-nonce" content="95cd074b2c885a4735bb8298d17b37664763d1e7"> <meta http-equiv="x-pjax-version" content="9b6ba8a4cf4b0c7b6ff5464d95558b26"> <link crossorigin="anonymous" media="all" integrity="sha512-PcJMPDRp7jbbEAmTk9kaL2kRQqg69QZ26WsZf07xsPyaipKsi3wVG0805PZNYXxotPDAliKKFvNSQPhD8fp1FQ==" rel="stylesheet" href="https://assets-cdn.github.com/assets/site-50c740d9290419d070dd6213a7cd03b5.css" /> <link rel="canonical" href="https://github.com/" data-pjax-transient> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000"> <link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://assets-cdn.github.com/favicon.ico"> <meta name="theme-color" content="#1e2327"> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive min-width-0 f4"> <div class="position-relative js-header-wrapper "> <a href="#start-of-content" tabindex="1" class="px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a> <div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div> <header class="Header header-logged-out js-details-container Details position-relative f4 py-3" role="banner"> <div class="container-lg d-lg-flex flex-items-center p-responsive"> <div class="d-flex flex-justify-between flex-items-center"> <a class="mr-4" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark"> <svg height="32" class="octicon octicon-mark-github text-white" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg> </a> <div class="d-lg-none css-truncate css-truncate-target width-fit p-2"> </div> <div class="d-flex flex-items-center"> <a class="d-inline-block d-lg-none f5 text-white no-underline border border-gray-dark rounded-2 px-2 py-1 mr-3 mr-sm-5" href="/join?source=experiment-header-dropdowns-home" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up; experiment:site_header_dropdowns; group:dropdowns">Sign up</a> <button class="btn-link d-lg-none mt-1 js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false"> <svg height="24" class="octicon octicon-three-bars text-white" viewBox="0 0 12 16" version="1.1" width="18" aria-hidden="true"><path fill-rule="evenodd" d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z"/></svg> </button> </div> </div> <div class="HeaderMenu HeaderMenu--logged-out position-fixed top-0 right-0 bottom-0 height-fit position-lg-relative d-lg-flex flex-justify-between flex-items-center flex-auto"> <div class="d-flex d-lg-none flex-justify-end border-bottom bg-gray-light p-3"> <button class="btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false"> <svg height="24" class="octicon octicon-x text-gray" viewBox="0 0 12 16" version="1.1" width="18" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg> </button> </div> <nav class="mt-0 px-3 px-lg-0 mb-5 mb-lg-0" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center "> <details class="HeaderMenu-details details-overlay details-reset width-full"> <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block"> Why GitHub? <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"> <path d="M1,1l6.2,6L13,1"></path> </svg> </summary> <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4"> <a href="/features" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Features">Features <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a> <ul class="list-style-none f5 pb-3"> <li class="edge-item-fix"><a href="/features/code-review/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code review">Code review</a></li> <li class="edge-item-fix"><a href="/features/project-management/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Project management">Project management</a></li> <li class="edge-item-fix"><a href="/features/integrations" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Integrations">Integrations</a></li> <li class="edge-item-fix"><a href="/features#team-management" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Team management">Team management</a></li> <li class="edge-item-fix"><a href="/features#social-coding" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Social coding">Social coding</a></li> <li class="edge-item-fix"><a href="/features#documentation" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Documentation">Documentation</a></li> <li class="edge-item-fix"><a href="/features#code-hosting" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code hosting">Code hosting</a></li> </ul> <ul class="list-style-none mb-0 border-lg-top pt-lg-3"> <li class="edge-item-fix"><a href="/case-studies" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Case studies">Case Studies <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li> <li class="edge-item-fix"><a href="/security" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Security">Security <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li> </ul> </div> </details> </li> <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3"> <a href="/business" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Business">Business</a> </li> <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center "> <details class="HeaderMenu-details details-overlay details-reset width-full"> <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block"> Explore <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"> <path d="M1,1l6.2,6L13,1"></path> </svg> </summary> <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4"> <ul class="list-style-none mb-3"> <li class="edge-item-fix"><a href="/explore" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Features">Explore GitHub <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li> </ul> <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Learn & contribute</h4> <ul class="list-style-none mb-3"> <li class="edge-item-fix"><a href="/topics" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Topics">Topics</a></li> <li class="edge-item-fix"><a href="/collections" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Collections">Collections</a></li> <li class="edge-item-fix"><a href="/trending" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Trending">Trending</a></li> <li class="edge-item-fix"><a href="https://lab.github.com/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Learning lab">Learning Lab</a></li> <li class="edge-item-fix"><a href="https://opensource.guide" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Open source guides">Open source guides</a></li> </ul> <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Connect with others</h4> <ul class="list-style-none mb-0"> <li class="edge-item-fix"><a href="/events" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Events">Events</a></li> <li class="edge-item-fix"><a href="https://github.community" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Community forum">Community forum</a></li> <li class="edge-item-fix"><a href="https://education.github.com" class="py-2 pb-0 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Education">GitHub Education</a></li> </ul> </div> </details> </li> <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3"> <a href="/marketplace" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Marketplace">Marketplace</a> </li> <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center "> <details class="HeaderMenu-details details-overlay details-reset width-full"> <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block"> Pricing <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"> <path d="M1,1l6.2,6L13,1"></path> </svg> </summary> <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-4 mt-0 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4"> <a href="/pricing" class="pb-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Pricing">Plans <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a> <ul class="list-style-none mb-3"> <li class="edge-item-fix"><a href="/pricing/developer" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Developers">Developer</a></li> <li class="edge-item-fix"><a href="/pricing/team" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Team">Team</a></li> <li class="edge-item-fix"><a href="/pricing/business-cloud" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Business Cloud">Business Cloud</a></li> <li class="edge-item-fix"><a href="/pricing/enterprise" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Enterprise">Enterprise</a></li> </ul> <ul class="list-style-none mb-0 border-lg-top pt-lg-3"> <li class="edge-item-fix"><a href="/pricing#feature-comparison" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Compare features">Compare plans <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li> <li class="edge-item-fix"><a href="/nonprofit" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Nonprofits">Nonprofit <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li> <li class="edge-item-fix"><a href="https://education.github.com/discount_requests/new" class="py-2 pb-0 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Education">Education <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li> </ul> </div> </details> </li> </ul> </nav> <div class="d-lg-flex flex-items-center px-3 px-lg-0 text-center text-lg-left"> <div class="d-lg-flex mr-lg-3 mb-3 mb-lg-0"> <div class="header-search js-site-search position-relative js-jump-to" role="combobox" aria-owns="jump-to-results" aria-label="Search or jump to" aria-haspopup="listbox" aria-expanded="false" > <div class="position-relative"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" data-unscoped-search-url="/search" action="/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" /> <label class="form-control header-search-wrapper header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center js-chromeless-input-container"> <input type="text" class="form-control header-search-input jump-to-field js-jump-to-field js-site-search-focus " data-hotkey="s,/" name="q" value="" placeholder="Search GitHub" data-unscoped-placeholder="Search GitHub" data-scoped-placeholder="Search" autocapitalize="off" aria-autocomplete="list" aria-controls="jump-to-results" aria-label="Search GitHub" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations#csrf-token=cciKhWNmjJYlLb5Jw19S6w2yc6X8U5syLtNUo6tbpEPgzJ9rOlQ5U6nPXW2SMRAl0Y1O8n79m8yQQoRiN2GyfQ==" spellcheck="false" autocomplete="off" > <input type="hidden" class="js-site-search-type-field" name="type" > <img src="https://assets-cdn.github.com/images/search-shortcut-hint.svg" alt="" class="mr-2 header-search-key-slash"> <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container"> <ul class="d-none js-jump-to-suggestions-template-container"> <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item" role="option"> <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center p-2 jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open" href=""> <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none"> <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg> <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg> <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg> </div> <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28"> <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target"> </div> <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search"> <span class="js-jump-to-badge-search-text-default d-none" aria-label="in all of GitHub"> Search </span> <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub"> All GitHub </span> <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span> </div> <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump"> Jump to <span class="d-inline-block ml-1 v-align-middle">↵</span> </div> </a> </li> </ul> <ul class="d-none js-jump-to-no-results-template-container"> <li class="d-flex flex-justify-center flex-items-center p-3 f5 d-none"> <span class="text-gray">No suggested jump to results</span> </li> </ul> <ul id="jump-to-results" role="listbox" class="js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container" > <li class="d-flex flex-justify-center flex-items-center p-0 f5"> <img src="https://assets-cdn.github.com/images/spinners/octocat-spinner-128.gif" alt="Octocat Spinner Icon" class="m-2" width="28"> </li> </ul> </div> </label> </form> </div> </div> </div> <a class="HeaderMenu-link no-underline mr-3" href="/login" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a> <a class="HeaderMenu-link d-inline-block no-underline border border-gray-dark rounded-1 px-2 py-1" href="/join?source=experiment-header-dropdowns-home" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a> </div> </div> </div> </header> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container"> </div> <div role="main" class="application-main " > <div class="py-6 py-sm-8 jumbotron-codelines"> <div class="container-lg p-responsive position-relative"> <div class="d-md-flex flex-items-center gutter-md-spacious"> <div class="col-md-7 text-center text-md-left "> <h1 class="h000-mktg text-white lh-condensed-ultra mb-3">Built for developers</h1> <p class="lead-mktg mb-4"> GitHub is a development platform inspired by the way you work. From <a href="/open-source" class="text-white jumbotron-link">open source</a> to <a href="/business" class="text-white jumbotron-link">business</a>, you can host and review code, manage projects, and build software alongside 31 million developers. </p> </div> <div class="mx-auto col-sm-8 col-md-5 hide-sm"> <div class="rounded-1 text-gray bg-gray-light py-4 px-4 px-md-3 px-lg-4"> <form class="home-hero-signup js-signup-form" autocomplete="off" action="/join" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="jsL/YlL9PQmBx3oepwQTQOTIDUXnD/FscBu05Tz3JGtVckrpOOZdHDroBEz19v2pypA31YA/9D5TD7Sr5n2Kng==" /> <dl class="form-group mt-0"> <dt class="input-label"> <label class="form-label f5" for="user[login]">Username</label> </dt> <dd> <auto-check src="/signup_check/username" csrf="uq4XuW5CY/bfiucpAezs5rfop0ejgi3HGTM4wOqv2cqtHu3NPtTGif/nIM6BzTBN3Aqzj/IRUaGSXuL/eemLOQ=="> <input type="text" name="user[login]" id="user[login]" class="form-control form-control-lg input-block" placeholder="Pick a username" autofocus> </auto-check> </dd> </dl> <dl class="form-group"> <dt class="input-label"> <label class="form-label f5" for="user[email]">Email</label> </dt> <dd> <auto-check src="/signup_check/email" csrf="1WU1GHPFPfpBkxiM9YOjnEtV3Gt5UWi9WxwwqfesEMkitimkuAf53nQYhM+FaousTSz3DZs440JMY4kJkb0TLA=="> <input type="text" name="user[email]" id="user[email]" class="form-control form-control-lg input-block js-email-notice-trigger" placeholder="you@example.com"> </auto-check> </dd> </dl> <password-strength data-minimum-character-count="8" data-beginning-of-sentence="Make sure it's" data-checks="["more than 15 characters", "or at least 8 characters", "including a number", "a lowercase letter"]" > <dl class="form-group"> <dt class="input-label"> <label class="form-label f5" for="user[password]">Password</label> </dt> <dd> <input type="password" name="user[password]" id="user[password]" class="form-control form-control-lg input-block" placeholder="Create a password"> <p class="form-control-note">Make sure it's more than 15 characters, or at least 8 characters, including a number, and a lowercase letter.</p> </dd> </dl> </password-strength> <input type="hidden" name="source" class="js-signup-source" value="form-home"> <input type="text" name="required_field_5bc6" id="required_field_5bc6" hidden="hidden" class="form-control" /> <input type="hidden" name="timestamp" value="1543403555282" class="form-control" /> <input type="hidden" name="timestamp_secret" value="2edc774c7b74d14a229aa9d3e44c1b9c9eb6961f90a852678444a91b744ac624" class="form-control" /> <button class="btn-mktg btn-primary-mktg btn-large-mktg f4 btn-block" type="submit" data-ga-click="Signup, Attempt, location:teams;">Sign up for GitHub</button> <p class="form-control-note mb-0 text-center"> By clicking “Sign up for GitHub”, you agree to our <a class="" href="https://help.github.com/terms" target="_blank">terms of service</a> and <a class="" href="https://help.github.com/privacy" target="_blank">privacy statement</a>. <span class="js-email-notice">We’ll occasionally send you account related emails.</span> </p> </form> </div> </div> <div class="d-sm-none text-center"> <a rel="nofollow" class="btn-mktg btn-primary-mktg btn-large-mktg" data-ga-click="Signup, Attempt, location:jumbotron mobile" href="/join?source=button-home">Sign up for GitHub</a> </div> </div> </div> </div> <div class="enterprise-prompt" data-ga-load="Home Enterprise prompt, view, contact request"> <div class="container-lg p-responsive"> <div class="col-md-9 col-lg-10 bg-white p-6 mx-auto text-center"> <h1 class="h1-mktg">Try GitHub Enterprise</h1> <p class="mb-3 text-gray"> Use GitHub on-premises with your own servers or in a private cloud with <a href="/pricing/enterprise" data-ga-click="Home Enterprise prompt, click, text:GitHub Enterprise" class="link-mktg">GitHub Enterprise</a>. Improve your developer efficiency with flexible deployment options, centralized permissions, hundreds of integrations, technical support, and more. </p> <p class="mb-3 text-center"> <a class="btn-mktg mb-2 mb-md-0 d-block d-md-inline-block text-center" href="https://enterprise.github.com/contact" data-ga-click="Home Enterprise prompt, click, text:Contact Sales">Contact Sales</a> <a class="btn-mktg btn-outline-mktg d-block d-md-inline-block text-center mx-md-1" href="https://enterprise.github.com/trial" data-ga-click="Home Enterprise prompt, click, text:Start a free trial">Start a free trial</a> </p> </div> </div> </div> <div class="container-lg p-responsive"> <div class="text-center py-7 py-md-8 py-lg-9 "> <h3 class="h3-mktg text-normal text-gray-light mb-4 lh-condensed"> More than 2.1 million businesses and organizations use GitHub </h3> <ul class="d-flex flex-justify-center flex-items-center flex-wrap list-style-none mt-2 mt-md-3 grayscale"> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/airbnb-logo.png" alt="Airbnb" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/sap-logo.png" alt="SAP" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/ibm-logo.png" alt="IBM" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/google-logo.png" alt="Google" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/paypal-logo.png" alt="PayPal" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/bloomberg-logo.png" alt="Bloomberg" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/spotify-logo.png" alt="Spotify" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/swift-logo.png" alt="Swift" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/facebook-logo.png" alt="Facebook" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/node-logo.png" alt="Node.js" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/nasa-logo.png" alt="NASA" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> <li><img src="https://assets-cdn.github.com/images/modules/site/logos/walmart-logo.png" alt="Walmart" class="logo-img-sm px-2 px-sm-4 px-md-5 my-md-3"></li> </ul> </div> </div> <div class="py-7 py-md-8 py-lg-9"> <div class="container-lg p-responsive pb-6"> <h6 class="h4 text-mono text-normal text-gray text-center"> GitHub for teams </h6> <h2 class="h00-mktg lh-condensed mt-3 mb-2 text-center"> A better way to work together </h2> <p class="lead-mktg text-gray text-center col-md-8 mx-auto mb-4"> GitHub brings teams together to work through problems, move ideas forward, and learn from each other along the way. </p> <div class="text-center"> <a class="btn-mktg btn-large-mktg btn-outline-mktg Bump-link" data-ga-click="Signup, Attempt, location:teams;" href="/join?plan=business&setup_organization=true&source=business-page"> Sign up your team <span class="Bump-link-symbol">→</span> </a> </div> </div> <div class="container-xl p-responsive"> <div class="position-relative overflow-hidden d-lg-flex pt-6"> <div class="col-10 col-sm-7 mx-auto mx-lg-6 mb-sm-3"> <img src="https://assets-cdn.github.com/images/modules/site/home-illo-team.svg" alt="" class="d-block width-fit mx-auto"> </div> <div class="col-lg-5"> <a href="/features/code-review" class="summarylink"> <div class="summarylink-illustration"> <img src="https://assets-cdn.github.com/images/modules/site/home-illo-team-code.svg" alt="" class="width-fit mx-auto"> </div> <div class="summarylink-btn d-flex flex-justify-between flex-items-center f5 text-gray-dark rounded-1 p-sm-4 my-4 my-sm-0"> <div class="col-10"> <h3 class="h3-mktg text-normal mb-1">Write better code</h3> <p class="mb-0">Collaboration makes perfect. The conversations and code reviews that happen in Pull Requests help your team share the weight of your work and improve the software you build. <span class="link-mktg">Learn about code review.</span></p> </div> <svg class="octicon octicon-triangle-right text-blue" viewBox="0 0 6 16" version="1.1" width="6" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 14l6-6-6-6v12z"/></svg> </div> </a> <a href="/features/project-management" class="summarylink"> <div class="summarylink-illustration"> <img src="https://assets-cdn.github.com/images/modules/site/home-illo-team-chaos.svg" alt="" class="width-fit mx-auto"> </div> <div class="summarylink-btn d-flex flex-justify-between flex-items-center f5 text-gray-dark rounded-1 p-sm-4 my-4 my-sm-0"> <div class="col-10"> <h3 class="h3-mktg text-normal mb-1">Manage your chaos</h3> <p class="mb-0">Take a deep breath. On GitHub, project management happens in Issues and Projects, right alongside your code. All you have to do is mention a teammate to get them involved. <span class="link-mktg">Learn about project management.</span></p> </div> <svg class="octicon octicon-triangle-right text-blue" viewBox="0 0 6 16" version="1.1" width="6" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 14l6-6-6-6v12z"/></svg> </div> </a> <a href="/features/integrations" class="summarylink"> <div class="summarylink-illustration"> <img src="https://assets-cdn.github.com/images/modules/site/home-illo-team-tools.svg" alt="" class="width-fit mx-auto"> </div> <div class="summarylink-btn d-flex flex-justify-between flex-items-center f5 text-gray-dark rounded-1 p-sm-4 my-4 my-sm-0"> <div class="col-10"> <h3 class="h3-mktg text-normal mb-1">Find the right tools</h3> <p class="mb-0">Browse and buy apps from GitHub Marketplace with your GitHub account. Find the tools you like or discover new favorites—then start using them in minutes. <span class="link-mktg">Learn about integrations.</span></p> </div> <svg class="octicon octicon-triangle-right text-blue" viewBox="0 0 6 16" version="1.1" width="6" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 14l6-6-6-6v12z"/></svg> </div> </a> </div> </div> </div> </div> <div class="py-7 py-md-8 py-lg-9"> <div class="container-lg p-responsive"> <h6 class="h4 text-mono text-normal text-gray text-center"> Security and administration </h6> <h2 class="h00-mktg mt-3 mb-2 text-center"> Boxes? Check. </h2> <p class="lead-mktg text-gray text-center col-md-8 mx-auto mb-4"> We worry about your administrative and security needs so you don’t have to. From flexible hosting to authentication options, GitHub can help you meet your team’s requirements. </p> <p class="text-center mb-5"> <a href="/business" class="btn-mktg btn-large-mktg btn-outline-mktg mx-auto Bump-link"> <span class="d-sm-none">How GitHub works for businesses <span class="Bump-link-symbol">→</span></span> <span class="d-none d-sm-inline">See how GitHub works for businesses <span class="Bump-link-symbol">→</span></span> </a> </p> <div class="d-md-flex flex-items-center flex-row-reverse mt-6 mb-3"> <div class="col-md-6 mx-auto px-5 pr-md-0 text-center"> <img src="https://assets-cdn.github.com/images/modules/site/home-illo-business.png" alt="Security and administration" class="width-fit mb-4"> </div> <div class="col-md-6 mx-auto text-md-left f5 p-sm-6"> <h3 class="h3-mktg text-normal mb-1">Code security</h3> <p class="text-gray mb-3 mb-md-5"> Prevent problems before they happen. Protected branches, signed commits, and required status checks protect your work and help you maintain a high standard for your code. </p> <h3 class="h3-mktg text-normal mb-1 mt-sm-6">Access controlled</h3> <p class="text-gray mb-3 mb-md-5"> Encourage teams to work together while limiting access to those who need it with granular permissions and authentication through SAML/SSO and LDAP. </p> </div> </div> <div class="col-md-7 mx-auto Tile Tile--dots clearfix p-4 border pt-5 bg-white" style="min-height: 0"> <div class="float-left"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" class="mr-4" width="64px"><title>1clr-code-hosting</title><path d="M27 13h-9a1 1 0 0 0 0 2h9a1 1 0 0 0 0-2zM42 12a1 1 0 0 0-1 1v2a1 1 0 0 0 2 0v-2a1 1 0 0 0-1-1zM46 12a1 1 0 0 0-1 1v2a1 1 0 0 0 2 0v-2a1 1 0 0 0-1-1zM27 28h-9a1 1 0 0 0 0 2h9a1 1 0 0 0 0-2zM42 31a1 1 0 0 0 1-1v-2a1 1 0 0 0-2 0v2a1 1 0 0 0 1 1zM46 31a1 1 0 0 0 1-1v-2a1 1 0 0 0-2 0v2a1 1 0 0 0 1 1z" fill="#23292f"></path><path d="M50 44h-1a13 13 0 0 0-4.68-9H48a3 3 0 0 0 3-3v-6a3 3 0 0 0-3-3h-5v-3h5a3 3 0 0 0 3-3v-6a3 3 0 0 0-3-3H16a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h5v3h-5a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h11.72a13 13 0 0 0-3.79 5.21A7 7 0 0 0 13.28 44 6 6 0 0 0 14 56h36a6 6 0 0 0 0-12zM15 17v-6a1 1 0 0 1 1-1h32a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H16a1 1 0 0 1-1-1zm8 3h18v3H23zm-7 13a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h32a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-7a12.9 12.9 0 0 0-10 0H16zm34 21H14a4 4 0 1 1 .09-8 1 1 0 0 0 1-.83 5 5 0 0 1 8.6-2.55 1 1 0 0 0 1.7-.42A11 11 0 0 1 47 45a1 1 0 0 0 1 1h2a4 4 0 0 1 0 8z" fill="#23292f"></path></svg> </div> <div class="overflow-hidden"> <h4 class="h4-mktg">Hosted where you need it</h4> <p class="f5 text-gray mr-2">Securely and reliably host your work on GitHub.com. Or, deploy GitHub Enterprise on your own servers or in a private cloud using Amazon Web Services, Azure or Google Cloud Platform.</p> <a href="/pricing" class="d-block no-underline Bump-link" data-ga-click="Home Enterprise blurb, click, text:Compare plans">Compare plans <span class="Bump-link-symbol">→</span></a> <a href="https://enterprise.github.com/contact" class="d-block no-underline Bump-link" data-ga-click="Home Enterprise blurb, click, text:Contact Sales for more information">Contact Sales for more information <span class="Bump-link-symbol">→</span></a> </div> </div> </div> </div> <div class="py-7 py-md-8 py-lg-9"> <div class="container-lg p-responsive text-center"> <div class="col-md-8 py-md-6 mx-auto"> <h6 class="h4 text-mono text-normal text-gray"> Integrations </h6> <h2 class="h00-mktg lh-condensed mt-3 mb-2"> Build on GitHub </h2> <p class="lead-mktg text-gray mb-4 px-md-3"> Customize your process with GitHub apps and an intuitive API. Integrate the tools you already use or discover new favorites to create a happier, more efficient way of working. </p> <p class="f4 text-center mb-6"> <a href="/features/integrations" class="btn-mktg btn-large-mktg btn-outline-mktg mx-auto Bump-link">Learn about integrations <span class="Bump-link-symbol">→</span></a> </p> </div> <div class="apps-cluster d-flex flex-wrap flex-justify-center pb-6"> <div class="CircleBadge CircleBadge--medium CircleBadge--feature tooltipped tooltipped-s tooltipped-no-delay" style="background-color: #553958;" aria-label="Slack"><img src="https://assets-cdn.github.com/images/modules/site/integrators/slackhq.png" alt="Slack" class="CircleBadge-icon"></div> <div class="CircleBadge CircleBadge--medium CircleBadge--feature tooltipped tooltipped-s tooltipped-no-delay" style="background-color: #364e98;" aria-label="ZenHub"><img src="https://assets-cdn.github.com/images/modules/site/integrators/zenhubio.png" alt="ZenHub" class="CircleBadge-icon"></div> <div class="CircleBadge CircleBadge--medium CircleBadge--feature tooltipped tooltipped-s tooltipped-no-delay" style="background-color: #eff9f9;" aria-label="Travis CI"><img src="https://assets-cdn.github.com/images/modules/site/integrators/travis-ci.png" alt="Travis CI" class="CircleBadge-icon"></div> <div class="CircleBadge CircleBadge--medium CircleBadge--feature tooltipped tooltipped-s tooltipped-no-delay" style="background-color: #5fb57d;" aria-label="Atom"><img src="https://assets-cdn.github.com/images/modules/site/integrators/atom.png" alt="Atom" class="CircleBadge-icon"></div> <div class="CircleBadge CircleBadge--medium CircleBadge--feature tooltipped tooltipped-s tooltipped-no-delay" style="background-color: #022531;" aria-label="Circle CI"><img src="https://assets-cdn.github.com/images/modules/site/integrators/circleci.png" alt="Circle CI" class="CircleBadge-icon"></div> <div class="CircleBadge CircleBadge--medium CircleBadge--feature tooltipped tooltipped-s tooltipped-no-delay" style="background-color: #f2f2f2;" aria-label="Google"><img src="https://assets-cdn.github.com/images/modules/site/integrators/google.png" alt="Google" class="CircleBadge-icon"></div> <div class="CircleBadge CircleBadge--medium CircleBadge--feature hide-sm tooltipped tooltipped-s tooltipped-no-delay" style="background-color: #303030;" aria-label="Code Climate"><img src="https://assets-cdn.github.com/images/modules/site/integrators/codeclimate.png" alt="Code Climate" class="CircleBadge-icon"></div> </div> <div class="col-md-8 py-md-6 mx-auto"> <p class="my-2 f5 col-sm-8 col-md-6 mx-auto text-gray"> Sometimes, there’s more than one tool for the job. Why not try something new? </p> <p> <a href="/marketplace" class="no-underline Bump-link">Browse GitHub Marketplace <span class="Bump-link-symbol">→</span></a> </p> </div> </div> </div> <div class="py-7 py-md-8 py-lg-9"> <div class="container-lg p-responsive"> <h6 class="h4 text-mono text-normal text-gray text-center"> Community </h6> <h2 class="h00-mktg mt-3 mb-4 lh-condensed text-center"> Welcome home, <br>developers </h2> <p class="lead-mktg text-gray text-center col-md-8 mx-auto"> GitHub is home to the world’s largest community of developers and their projects... </p> </div> <div class="d-flex flex-nowrap flex-items-stretch flex-lg-items-start overflow-auto px-2 py-6 my-6"> <article class="Story Story--large Story--stagger col-6 col-sm-3 p-2"> <a href="/case-studies/ariya" class="Story-link d-block d-lg-flex height-full rounded-1 box-shadow-extra-large"> <div class="col-lg-6 position-relative overflow-hidden"> <div class="casestudy-square"> <img class="d-block height-full position-absolute" alt="Ariya Hidayat" src="https://assets-cdn.github.com/images/modules/site/case-studies/hero/ariya.jpg" /> </div> </div> <div class="d-lg-flex flex-items-center col-lg-6"> <div class="width-full text-center p-3 py-lg-0"> <h1 class="Story-title h3-mktg text-normal link-gray-dark lh-condensed mb-1">Ariya Hidayat</h1> <p class="f6 text-mono text-gray"> PhantomJS maintainer </p> </div> </div> </a> </article> <article class="Story Story--large Story--stagger col-6 col-sm-3 p-2"> <a href="/case-studies/freakboy3742" class="Story-link d-block d-lg-flex height-full rounded-1 box-shadow-extra-large"> <div class="col-lg-6 position-relative overflow-hidden"> <div class="casestudy-square"> <img class="d-block height-full position-absolute" alt="Russell Keith-Magee" src="https://assets-cdn.github.com/images/modules/site/case-studies/hero/freakboy3742.jpg" /> </div> </div> <div class="d-lg-flex flex-items-center col-lg-6"> <div class="width-full text-center p-3 py-lg-0"> <h1 class="Story-title h3-mktg text-normal link-gray-dark lh-condensed mb-1">Russell Keith-Magee</h1> <p class="f6 text-mono text-gray"> PyBee maintainer </p> </div> </div> </a> </article> <article class="Story Story--large Story--stagger col-6 col-sm-3 p-2"> <a href="/case-studies/mailchimp" class="Story-link Story-link--customer d-block d-lg-flex height-full rounded-1 box-shadow-extra-large"> <div class="col-lg-6 position-relative overflow-hidden"> <div class="casestudy-square"> <img class="d-block height-full position-absolute" alt="MailChimp" src="https://assets-cdn.github.com/images/modules/site/case-studies/hero/mailchimp.jpg" /> </div> </div> <div class="d-lg-flex flex-items-center col-lg-6"> <div class="width-full text-center p-3 py-lg-0"> <h1 class="Story-title h3-mktg text-normal link-gray-dark lh-condensed mb-1">MailChimp</h1> <p class="f6 text-mono text-gray"> Marketing customer </p> </div> </div> </a> </article> <article class="Story Story--large Story--stagger col-6 col-sm-3 p-2"> <a href="/case-studies/kris-nova" class="Story-link d-block d-lg-flex height-full rounded-1 box-shadow-extra-large"> <div class="col-lg-6 position-relative overflow-hidden"> <div class="casestudy-square"> <img class="d-block height-full position-absolute" alt="Kris Nova" src="https://assets-cdn.github.com/images/modules/site/case-studies/hero/kris-nova.jpg" /> </div> </div> <div class="d-lg-flex flex-items-center col-lg-6"> <div class="width-full text-center p-3 py-lg-0"> <h1 class="Story-title h3-mktg text-normal link-gray-dark lh-condensed mb-1">Kris Nova</h1> <p class="f6 text-mono text-gray"> Kubernetes/kops maintainer </p> </div> </div> </a> </article> <article class="Story Story--large Story--stagger col-6 col-sm-3 p-2"> <a href="/case-studies/yyx990803" class="Story-link d-block d-lg-flex height-full rounded-1 box-shadow-extra-large"> <div class="col-lg-6 position-relative overflow-hidden"> <div class="casestudy-square"> <img class="d-block height-full position-absolute" alt="Evan You" src="https://assets-cdn.github.com/images/modules/site/case-studies/hero/yyx990803.jpg" /> </div> </div> <div class="d-lg-flex flex-items-center col-lg-6"> <div class="width-full text-center p-3 py-lg-0"> <h1 class="Story-title h3-mktg text-normal link-gray-dark lh-condensed mb-1">Evan You</h1> <p class="f6 text-mono text-gray"> Vue maintainer </p> </div> </div> </a> </article> <article class="Story Story--large Story--stagger col-6 col-sm-3 p-2"> <a href="/case-studies/mapbox" class="Story-link Story-link--customer d-block d-lg-flex height-full rounded-1 box-shadow-extra-large"> <div class="col-lg-6 position-relative overflow-hidden"> <div class="casestudy-square"> <img class="d-block height-full position-absolute" alt="Mapbox" src="https://assets-cdn.github.com/images/modules/site/case-studies/hero/mapbox.jpg" /> </div> </div> <div class="d-lg-flex flex-items-center col-lg-6"> <div class="width-full text-center p-3 py-lg-0"> <h1 class="Story-title h3-mktg text-normal link-gray-dark lh-condensed mb-1">Mapbox</h1> <p class="f6 text-mono text-gray"> Software customer </p> </div> </div> </a> </article> <article class="Story Story--large Story--stagger col-6 col-sm-3 p-2"> <a href="/case-studies/jessfraz" class="Story-link d-block d-lg-flex height-full rounded-1 box-shadow-extra-large"> <div class="col-lg-6 position-relative overflow-hidden"> <div class="casestudy-square"> <img class="d-block height-full position-absolute" alt="Jess Frazelle" src="https://assets-cdn.github.com/images/modules/site/case-studies/hero/jessfraz.jpg" /> </div> </div> <div class="d-lg-flex flex-items-center col-lg-6"> <div class="width-full text-center p-3 py-lg-0"> <h1 class="Story-title h3-mktg text-normal link-gray-dark lh-condensed mb-1">Jess Frazelle</h1> <p class="f6 text-mono text-gray"> Kubernetes, previously Docker maintainer </p> </div> </div> </a> </article> </div> <div class="container-lg p-responsive"> <p class="lead-mktg text-gray text-center col-md-8 mx-auto pb-md-6"> ...whether you’re making your first commit or sending a Rover to Mars, there’s room for you here, too. </p> <div class="gutter-md"> <div class="communitystats position-relative"> <a href="/open-source" class="d-inline-block summarylink"> <div class="circle d-flex flex-column flex-justify-center text-center p-4 mx-auto mt-6 mb-3 m-md-3 bg-orange box-shadow-extra-large"> <span class="d-block h0-mktg text-normal text-white lh-condensed-ultra mb-2">96M<sup class="f2-light">*</sup></span> <span class="f6 text-white">repositories worldwide</span> </div> <div class="summarylink-btn d-flex flex-justify-between flex-items-center f5 text-gray-dark rounded-1 p-sm-4"> <p class="col-10 mb-0">GitHub’s users create and maintain influential technologies alongside the world’s largest <span class="text-orange-light">open source community</span>.</p> <svg class="octicon octicon-triangle-right text-orange-light" viewBox="0 0 6 16" version="1.1" width="6" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 14l6-6-6-6v12z"/></svg> </div> </a> <a href="/personal" class="d-inline-block summarylink"> <div class="circle d-flex flex-column flex-justify-center text-center p-4 mx-auto mt-6 mb-3 m-md-3 bg-blue box-shadow-extra-large"> <span class="d-block h0-mktg text-normal text-white lh-condensed-ultra mb-2">31M<sup class="f2-light">*</sup></span> <span class="f6 text-white">developers worldwide</span> </div> <div class="summarylink-btn d-flex flex-justify-between flex-items-center f5 text-gray-dark rounded-1 p-sm-4"> <p class="col-10 mb-0"><span class="text-blue">Developers</span> use GitHub for personal projects, from experimenting with new programming languages to hosting their life’s work.</p> <svg class="octicon octicon-triangle-right text-blue" viewBox="0 0 6 16" version="1.1" width="6" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 14l6-6-6-6v12z"/></svg> </div> </a> <a href="/business" class="d-inline-block summarylink"> <div class="circle d-flex flex-column flex-justify-center text-center p-4 mx-auto mt-6 mb-3 m-md-3 bg-purple box-shadow-extra-large"> <span class="d-block h1-mktg text-normal text-white lh-condensed-ultra my-2">2.1M<sup class="f3-light">*</sup></span> <span class="f6 text-white">businesses and organizations worldwide</span> </div> <div class="summarylink-btn d-flex flex-justify-between flex-items-center f5 text-gray-dark rounded-1 p-sm-4"> <p class="col-10 mb-0"><span class="text-purple">Businesses</span> of all sizes use GitHub to support their development process and to securely build software.</p> <svg class="octicon octicon-triangle-right text-purple" viewBox="0 0 6 16" version="1.1" width="6" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 14l6-6-6-6v12z"/></svg> </div> </a> <div class="mt-6 ml-md-4 text-gray-light f6"> * As of October 2018 </div> </div> </div> </div> </div> <div class="py-7 py-md-8 py-lg-9 bg-gray-dark"> <div class="container-lg p-responsive text-white text-center"> <h2 class="h1-mktg text-normal"> Get started for free — join the millions of developers already using GitHub to share their code, work together, and build amazing things. </h2> </div> <div class="container-xl p-responsive py-6 mt-lg-6"> <form class="home-hero-signup js-signup-form" autocomplete="off" action="/join" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="GPRSdZJwZoQEYEiEBpnAD/k6C0SPTO4pqxvVP0k47AfDROf++GsGkb9PNtZUay7m12Ix1Oh863uID9Vxk7JC8g==" /> <div class="d-lg-flex flex-wrap flex-lg-nowrap flex-justify-between"> <dl class="form-group col-12 col-sm-8 col-lg-3 mx-auto mt-0 mx-lg-0 mb-3 mb-lg-0 px-3"> <dt class="input-label sr-only"> <label class="form-label text-gray f5" for="user[login]-footer">Username</label> </dt> <dd> <auto-check src="/signup_check/username" csrf="lSdRNfU7KYppJjCTPQv/Ds4F0sXgMwTAPLuS5CRS3T+Cl6tBpa2M9UlL93S9KiOlpefGDbGgeKa31kjbtxSPzA=="> <input type="text" name="user[login]" id="user[login]-footer" class="form-control form-control-lg input-block input-lg" placeholder="Pick a username"> </auto-check> </dd> </dl> <dl class="form-group col-12 col-sm-8 col-lg-3 mx-auto mt-0 mx-lg-0 mb-3 mb-lg-0 px-3"> <dt class="input-label sr-only"> <label class="form-label text-gray f5" for="user[email]-footer">Email</label> </dt> <dd> <auto-check src="/signup_check/email" csrf="CkucVuCX8VnFe9TXRTFgIXg3atsfLB7L7L4Bc3lcl5T9mIDqK1U1ffDwSJQ12EgRfk5Bvf1FlTT7wbjTH02UcQ=="> <input type="text" name="user[email]" id="user[email]-footer" class="form-control form-control-lg input-block input-lg js-email-notice-trigger" placeholder="Your email address"> </auto-check> </dd> </dl> <dl class="form-group col-12 col-sm-8 col-lg-3 mx-auto mt-0 mx-lg-0 mb-3 mb-lg-0 px-3"> <dt class="input-label sr-only"> <label class="form-label text-gray f5" for="user[password]-footer">Password</label> </dt> <dd> <input type="password" name="user[password]" id="user[password]-footer" class="form-control form-control-lg input-block input-lg" placeholder="Create a password"> </dd> </dl> <input type="hidden" name="source" class="js-signup-source" value="form-home"> <input type="text" name="required_field_a6db" id="required_field_a6db" hidden="hidden" class="form-control" /> <input type="hidden" name="timestamp" value="1543403555302" class="form-control" /> <input type="hidden" name="timestamp_secret" value="6c916a6fa8cbe0126f62d608818b902c1ed0ad53f26721d8d8e27c596707e9ea" class="form-control" /> <div class="col-12 col-sm-8 col-lg-3 mx-auto mx-lg-0 mb-3 mb-lg-0 px-3"> <button class="btn-mktg btn-primary-mktg btn-block mt-n1" type="submit" data-ga-click="Signup, Attempt, location:teams;">Sign up for GitHub</button> </div> </div> <p class="form-control-note text-center mt-6"> By clicking “Sign up for GitHub”, you agree to our <a class="text-white" href="https://help.github.com/terms" target="_blank">terms of service</a> and <a class="text-white" href="https://help.github.com/privacy" target="_blank">privacy statement</a>. <span class="js-email-notice">We’ll occasionally send you account related emails.</span> </p> </form> </div> </div> <div class="modal-backdrop js-touch-events"></div> </div> <div class="footer mt-6" role="contentinfo"> <div class="container-lg p-responsive"> <div class="d-flex flex-wrap py-5 mb-5"> <div class="col-12 col-lg-4 mb-5"> <a href="/" data-ga-click="Footer, go to home, text:home" class="text-gray-dark" aria-label="Go to GitHub homepage"> <svg height="30" class="octicon octicon-logo-github" viewBox="0 0 45 16" version="1.1" width="84" aria-hidden="true"><path fill-rule="evenodd" d="M18.53 12.03h-.02c.009 0 .015.01.024.011h.006l-.01-.01zm.004.011c-.093.001-.327.05-.574.05-.78 0-1.05-.36-1.05-.83V8.13h1.59c.09 0 .16-.08.16-.19v-1.7c0-.09-.08-.17-.16-.17h-1.59V3.96c0-.08-.05-.13-.14-.13h-2.16c-.09 0-.14.05-.14.13v2.17s-1.09.27-1.16.28c-.08.02-.13.09-.13.17v1.36c0 .11.08.19.17.19h1.11v3.28c0 2.44 1.7 2.69 2.86 2.69.53 0 1.17- 100 61937 0 61937 0 0 29538 0 --:--:-- 0:00:02 --:--:-- 29536.17 1.27-.22.06-.02.09-.09.09-.16v-1.5a.177.177 0 0 0-.146-.18zM42.23 9.84c0-1.81-.73-2.05-1.5-1.97-.6.04-1.08.34-1.08.34v3.52s.49.34 1.22.36c1.03.03 1.36-.34 1.36-2.25zm2.43-.16c0 3.43-1.11 4.41-3.05 4.41-1.64 0-2.52-.83-2.52-.83s-.04.46-.09.52c-.03.06-.08.08-.14.08h-1.48c-.1 0-.19-.08-.19-.17l.02-11.11c0-.09.08-.17.17-.17h2.13c.09 0 .17.08.17.17v3.77s.82-.53 2.02-.53l-.01-.02c1.2 0 2.97.45 2.97 3.88zm-8.72-3.61h-2.1c-.11 0-.17.08-.17.19v5.44s-.55.39-1.3.39-.97-.34-.97-1.09V6.25c0-.09-.08-.17-.17-.17h-2.14c-.09 0-.17.08-.17.17v5.11c0 2.2 1.23 2.75 2.92 2.75 1.39 0 2.52-.77 2.52-.77s.05.39.08.45c.02.05.09.09.16.09h1.34c.11 0 .17-.08.17-.17l.02-7.47c0-.09-.08-.17-.19-.17zm-23.7-.01h-2.13c-.09 0-.17.09-.17.2v7.34c0 .2.13.27.3.27h1.92c.2 0 .25-.09.25-.27V6.23c0-.09-.08-.17-.17-.17zm-1.05-3.38c-.77 0-1.38.61-1.38 1.38 0 .77.61 1.38 1.38 1.38.75 0 1.36-.61 1.36-1.38 0-.77-.61-1.38-1.36-1.38zm16.49-.25h-2.11c-.09 0-.17.08-.17.17v4.09h-3.31V2.6c0-.09-.08-.17-.17-.17h-2.13c-.09 0-.17.08-.17.17v11.11c0 .09.09.17.17.17h2.13c.09 0 .17-.08.17-.17V8.96h3.31l-.02 4.75c0 .09.08.17.17.17h2.13c.09 0 .17-.08.17-.17V2.6c0-.09-.08-.17-.17-.17zM8.81 7.35v5.74c0 .04-.01.11-.06.13 0 0-1.25.89-3.31.89-2.49 0-5.44-.78-5.44-5.92S2.58 1.99 5.1 2c2.18 0 3.06.49 3.2.58.04.05.06.09.06.14L7.94 4.5c0 .09-.09.2-.2.17-.36-.11-.9-.33-2.17-.33-1.47 0-3.05.42-3.05 3.73s1.5 3.7 2.58 3.7c.92 0 1.25-.11 1.25-.11v-2.3H4.88c-.11 0-.19-.08-.19-.17V7.35c0-.09.08-.17.19-.17h3.74c.11 0 .19.08.19.17z"/></svg> </a> </div> <div class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-lg-0 pl-lg-4"> <h4 class="mb-3 text-mono text-gray-light text-normal">Product</h4> <ul class="list-style-none text-gray f5"> <li class="lh-condensed mb-3"><a href="/features" data-ga-click="Footer, go to features, text:features" class="link-gray">Features</a></li> <li class="lh-condensed mb-3"><a href="/security" data-ga-click="Footer, go to security, text:security" class="link-gray">Security</a></li> <li class="lh-condensed mb-3"><a href="/business" data-ga-click="Footer, go to business, text:business" class="link-gray">Business</a></li> <li class="lh-condensed mb-3"><a href="/case-studies?type=customers" data-ga-click="Footer, go to case studies, text:case studies" class="link-gray">Case studies</a></li> <li class="lh-condensed mb-3"><a href="/pricing" data-ga-click="Footer, go to pricing, text:pricing" class="link-gray">Pricing</a></li> <li class="lh-condensed mb-3"><a href="https://resources.github.com" data-ga-click="Footer, go to resources, text:resources" class="link-gray">Resources</a></li> </ul> </div> <div class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4"> <h4 class="mb-3 text-mono text-gray-light text-normal">Platform</h4> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api" class="link-gray">Developer API</a></li> <li class="lh-condensed mb-3"><a href="http://partner.github.com/" data-ga-click="Footer, go to partner, text:partner" class="link-gray ">Partners</a></li> <li class="lh-condensed mb-3"><a href="https://atom.io" data-ga-click="Footer, go to atom, text:atom" class="link-gray ">Atom</a></li> <li class="lh-condensed mb-3"><a href="http://electron.atom.io/" data-ga-click="Footer, go to electron, text:electron" class="link-gray ">Electron</a></li> <li class="lh-condensed mb-3"><a href="https://desktop.github.com/" data-ga-click="Footer, go to desktop, text:desktop" class="link-gray ">GitHub Desktop</a></li> </ul> </div> <div class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4"> <h4 class="mb-3 text-mono text-gray-light text-normal">Support</h4> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"><a data-ga-click="Footer, go to help, text:help" class="link-gray " href="https://help.github.com">Help</a></li> <li class="lh-condensed mb-3"><a href="https://github.community" data-ga-click="Footer, go to community, text:community" class="link-gray ">Community Forum</a></li> <li class="lh-condensed mb-3"><a href="https://services.github.com/" data-ga-click="Footer, go to training, text:training" class="link-gray ">Training</a></li> <li class="lh-condensed mb-3"><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status" class="link-gray ">Status</a></li> <li class="lh-condensed mb-3"><a data-ga-click="Footer, go to contact, text:contact" class="link-gray " href="https://github.com/contact">Contact GitHub</a></li> </ul> </div> <div class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4"> <h4 class="mb-3 text-mono text-gray-light text-normal">Company</h4> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"><a data-ga-click="Footer, go to about, text:about" class="link-gray " href="https://github.com/about">About</a></li> <li class="lh-condensed mb-3"><a href="https://blog.github.com" data-ga-click="Footer, go to blog, text:blog" class="link-gray ">Blog</a></li> <li class="lh-condensed mb-3"><a href="/about/careers" data-ga-click="Footer, go to careers, text:careers" class="link-gray">Careers</a></li> <li class="lh-condensed mb-3"><a href="/about/press" data-ga-click="Footer, go to press, text:press" class="link-gray">Press</a></li> <li class="lh-condensed mb-3"><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop" class="link-gray">Shop</a></li> </ul> </div> </div> </div> <div class="bg-gray-light"> <div class="container-lg p-responsive f6 py-4 d-sm-flex flex-justify-between flex-row-reverse flex-items-center"> <ul class="list-style-none d-flex flex-items-center mb-3 mb-sm-0 lh-condensed-ultra"> <li class="mr-3"><a href="https://twitter.com/github" data-ga-click="Footer, go to Twitter, text:twitter" title="GitHub on Twitter" style="color: #959da5;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 273.5 222.3" class="d-block" height="18"> <g fill="currentColor"> <path d="M273.5,26.3a109.77,109.77,0,0,1-32.2,8.8A56.07,56.07,0,0,0,266,4.1a113.39,113.39,0,0,1-35.7,13.6,56.1,56.1,0,0,0-97,38.4,54,54,0,0,0,1.5,12.8A159.68,159.68,0,0,1,19.1,10.3,56.12,56.12,0,0,0,36.5,85.2a56.06,56.06,0,0,1-25.4-7v.7a56.11,56.11,0,0,0,45,55,55.65,55.65,0,0,1-14.8,2,62.39,62.39,0,0,1-10.6-1,56.24,56.24,0,0,0,52.4,39,112.87,112.87,0,0,1-69.7,24A119,119,0,0,1,0,197.1a158.83,158.83,0,0,0,86,25.2c103.2,0,159.6-85.5,159.6-159.6,0-2.4-.1-4.9-.2-7.3a114.25,114.25,0,0,0,28.1-29.1"></path> </g> </svg> </a></li> <li class="mr-3"><a href="https://www.facebook.com/GitHub" data-ga-click="Footer, go to Facebook, text:facebook" title="GitHub on Facebook" style="color: #959da5;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.3 15.4" class="d-block" height="18"> <g fill="currentColor"> <path d="M14.5,0H.8A.88.88,0,0,0,0,.9V14.5a.88.88,0,0,0,.8.9H8.1v-6h-2V7.1h2V5.4a2.87,2.87,0,0,1,2.5-3.1h.5a10.87,10.87,0,0,1,1.8.1V4.5H11.6c-1,0-1.1.5-1.1,1.1V7.1h2.3l-.3,2.3h-2v5.9h3.9a.88.88,0,0,0,.9-.8h0V.8A.86.86,0,0,0,14.5,0Z"></path> </g> </svg> </a></li> <li class="mr-3"><a href="https://www.youtube.com/github" data-ga-click="Footer, go to YouTube, text:youtube" title="GitHub on YouTube" style="color: #959da5;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.17 13.6" class="d-block" height="16"> <g fill="currentColor"> <path d="M18.77,2.13A2.4,2.4,0,0,0,17.09.42C15.59,0,9.58,0,9.58,0a57.55,57.55,0,0,0-7.5.4A2.49,2.49,0,0,0,.39,2.13,26.27,26.27,0,0,0,0,6.8a26.15,26.15,0,0,0,.39,4.67,2.43,2.43,0,0,0,1.69,1.71c1.52.42,7.5.42,7.5.42a57.69,57.69,0,0,0,7.51-.4,2.4,2.4,0,0,0,1.68-1.71,25.63,25.63,0,0,0,.4-4.67A24,24,0,0,0,18.77,2.13ZM7.67,9.71V3.89l5,2.91Z"></path> </g> </svg> </a></li> <li class="mr-3 flex-self-start"><a href="https://www.linkedin.com/company/github" data-ga-click="Footer, go to Linkedin, text:linkedin" title="GitHub on Linkedin" style="color: #959da5;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" class="d-block" height="18"> <g fill="currentColor"> <path d="M3.94,2A2,2,0,1,1,2,0,2,2,0,0,1,3.94,2ZM4,5.48H0V18H4Zm6.32,0H6.34V18h3.94V11.43c0-3.66,4.77-4,4.77,0V18H19V10.07c0-6.17-7.06-5.94-8.72-2.91Z"></path> </g> </svg> </a></li> <li><a href="https://github.com/github" data-ga-click="Footer, go to github's org, text:github" title="GitHub's organization" style="color: #959da5;"><svg height="20" class="octicon octicon-mark-github d-block" alt="GitHub" viewBox="0 0 16 16" version="1.1" width="20" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg></a></li> </ul> <ul class="list-style-none d-flex text-gray"> <li class="mr-3">© 2018 GitHub, Inc.</li> <li class="mr-3"><a href="/site/terms" data-ga-click="Footer, go to terms, text:terms" class="link-gray">Terms</a></li> <li><a href="/site/privacy" data-ga-click="Footer, go to privacy, text:privacy" class="link-gray">Privacy</a></li> </ul> </div> </div> </div> <div id="ajax-error-message" class="ajax-error-message flash flash-error"> <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg> </button> You can’t perform that action at this time. </div> <script crossorigin="anonymous" integrity="sha512-WnyO4VoIUwWWQOmFLjYf4UGg/c1z9VlaLN8IMuiI3uMhhl6rejyThRdLPDyePeUPW6N+38OoBMs6AkqcvWALtA==" type="application/javascript" src="https://assets-cdn.github.com/assets/compat-b66b5d97b4442a01f057c74b091c4368.js"></script> <script crossorigin="anonymous" integrity="sha512-Ax8so2RYXS5IplklIjBUPCs/H8jumancM4AKLTR35EuK3eUxGRyo1EkTBkTQnSUzk5ZQ9pYsHYLJ1ImS2Fcerg==" type="application/javascript" src="https://assets-cdn.github.com/assets/frameworks-755e0c008571c9f249a478f4cda76ecf.js"></script> <script crossorigin="anonymous" async="async" integrity="sha512-Sj2Mi4s+JFRnELcUX0MvfW4vZFDOvB931nSlmoeHBGtu49O4WiRw8iSXJwAxEhxROt1LHSfnduEfn7VX4D8IGA==" type="application/javascript" src="https://assets-cdn.github.com/assets/github-f4a5e5c438a2ec5567802ead3931f7db.js"></script> <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none"> <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg> <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span> <spa 100 75709 0 75709 0 0 33114 0 --:--:-- 0:00:02 --:--:-- 33104 * Connection #0 to host 192.168.11.200 left intact n class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span> </div> <div class="facebox" id="facebox" style="display:none;"> <div class="facebox-popup"> <div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description"> </div> <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal"> <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg> </button> </div> </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark" open> <summary aria-haspopup="dialog" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;"> </div> </div> <div id="hovercard-aria-description" class="sr-only"> Press h to open a hovercard with more details. </div> </body> </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。