linux下git以及github的连接与使用
简单理解 Git 的思想和基本的工作原理,能够更好的进一步和使用Git。在开始学习Git 的时候,最好不要把Git的各种概念和其他的版本控制系统诸如 Subversion 等相比,否则容易混淆每个操作的实际意义。
Git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖于网络和中心服务器。
Git 在管理项目时,在本地会有三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。如下图所示:

因此对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。
在简单地了解了Git之后,那么接下来的事情就是安装Git客户端了,命令如下:
sudo apt-get install git
但是,安装了Git客户端之后,如果你的代码不是托管在GitHub上就可以跳过设置GitHub账户内容了,否则还需要配置一下GitHub账户,GitHub为托管的Git版本库提供SSH协议支持,即用户可以用公钥认证的方式连接到GitHub的SSH服务器。设置之后才能够使用Git命令来下载和推送代码。
首先需要到https://github.com/ 注册一个账户:只要点击导航条中的“Signup and Pricing”,或者点击首页中那个大大的“Plans, Pricing and Signup”按钮,即进入收费方案介绍及注册页面。开源软件托管是GitHub的基石,对于开源项目的版本库(即非私有版本库)的托管,GitHub是免费的。在收费方案及注册页面中,最上面的就是针对于开源的免费托管方案,如下图所示。

点击上图右侧的“Create a free account”按钮,就进入到注册页面,如下图所示。

注册只需要用户名,邮件地址和密码需要输入。注意:每个邮件地址只能注册一次。注册完成之后就会以新注册的账号自动登录。如下图所示:

点击上图右上角的设置按钮,就能进入设置页面,我们主要关注的是“ setting up Git and SSH keys”,设置成功之后用户可以用公钥认证的方式连接到GitHub的SSH服务器。
我们首先使用ssh命令连接github.com的SSH服务,登录用户名为git(所有GitHub用户共享此SSH用户名,不要写成其他)。
ssh -T git@github.com
执行之后提示:Permission denied (publickey).
这说明我们还没在GitHub账户中正确设置公钥认证。下图为GitHub的SSH公钥设置界面:

GitHub的SSH服务支持OpenSSH格式的公钥认证,可以通过Ubuntu下的ssh-keygen命令创建公钥/私钥对。
ssh-keygen -C "yourname@yourcompany.com" -f ~/.ssh/github
也可以用ssh-keygen命令以不同的名称创建多个公钥,当拥有多个GitHub账号时,非常重要。这是因为虽然一个GitHub账号允许使用多个不同的SSH公钥,但反过来,一个SSH公钥只能对应于一个GitHub账号。
接下来就将~/.ssh/github.pub文件内容拷贝到剪切板。公钥是一行长长的字符串,若用编辑器打开公钥文件会折行显示,注意在copy时一定不要在其中插入多余的换行符、空格等,否则在公钥认证过程因为服务器端和客户端公钥不匹配而导致认证失败。然后将公钥文件中的内容粘贴到GitHub的SSH公钥管理的对话框,即上图key对话框中,并为这个SSH Key起个名字并保存。设置成功后,再用ssh命令访问GitHub,会显示一条认证成功信息并退出。在认证成功的信息中还会显示该公钥对应的用户名。
ssh -T git@github.com
执行后提示:Hi github! You've successfully authenticated, but GitHub does not provide shell access.
通过以上的设置之后,我们就能够通过SSH的方式,直接使用Git命令访问GitHub托管服务器了。那么,下面我们就开始使用Git进行版本控制:
1. 从服务器下载代码,准确的说应该是从GitHub服务器复制一个版本库到本地:
mkdir git
mkdir repos
cd git/repos
git clone git@github.com:"account context"/"repos name".git
2. 获取到源码之后,就可以进行开发了,代码开发完成就可以提交代码:
git add . //往暂存区域添加已添加和修改的文件,不处理删除的文件
git status //比较本地数据目录与暂存区域的变化
git commit -m "commit directions" //提到代码到本地数据目录,并添加提交说明
3. 有可能你和其他人改的是同一个文件,那么冲突的情况是在所难免的,那么在提交之后再获取一下代码,就会提示代码冲突的文件,我们需要做的就是处理这些冲突,并再次提交:
git pull //更新代码
根据提示修改冲突文件中的代码
git add .
git commit -m "commit directions"
4. 当你做完以上的步骤的时候,你需要做的是把本地数据目录的版本库的数据同步到GitHub服务器上去,这样你的同事才能够看到你作出的修改:
git push
注意:""中的内容需要读者根据自己实际情况书写合适的内容。
本文的主要目的是为了让程序员能够快速的上手使用Git和GitHub,希望对大家有帮助。
linux下git以及github的连接与使用的更多相关文章
- Linux下Git和GitHub使用方法总结
来源:Linux下Git和GitHub使用方法总结 1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 “sudo apt-get install git” 第二步: 到G ...
- Linux 下建立 Git 与 GitHub 的连接
Git 是一款开源的分布式版本控制系统,而 GitHub 是依托 Git 的代码托管平台. GitHub 利用 Git 极其强大的克隆和分支功能,使得社区成员能够自由地参与到开源项目中去. 不过,在开 ...
- linux下git的简单运用
linux下git的简单运用 windows下也有git,是git公司出的bash,基本上模拟了linux下命令行.许多常用的命令和linux下操作一样.也就是说,windows下的git命令操作和l ...
- linux下git的安装和使用(转)
转自:http://www.cnblogs.com/sunada2005/archive/2013/06/06/3121098.html 最近在使用github,感觉不错.在windows下,可使用g ...
- linux下git使用记录1 git 提交
linux下git使用记录1 浏览:985 发布日期:2013/08/08 分类:技术分享 在使用github的时候,不可避免的接触到了git,用他来更新项目,做版本控制.这里特别把常用的命令记录 ...
- Linux下Jenkins与GitHub自动构建NetCore与部署
今天我们来谈谈NetCore在Linux底下的持续集成与部署.NetCore我就不多介绍了,持续集成用的是Jenkins,源代码管理器用的是GitHub.我们就跟着博文往下走吧. 1.Linux环境 ...
- Linux下git安装配置
一.Linux下git安装配置 2013-07-28 20:32:10| 分类: 默认分类 | 标签:linux git server |举报|字号 订阅 http://abomby ...
- (笔记)Linux下检测网卡与网线连接状态
http://blog.chinaunix.net/space.php?uid=20357359&do=blog&cuid=1798479 Linux下检测网卡与网线连接状态,使用io ...
- Linux下Jenkins与GitHub自动构建Node项目(Vue)
根据上篇文章<Linux下Jenkins与GitHub自动构建NetCore与部署>,我们知道了Jenkins的强大功能,自动构建,部署了一个NetCore的Web,让开发人员专注于开发, ...
随机推荐
- hdu 1241 Oil Deposits
#include<cstdio> #include<iostream> #include<algorithm> #include<math.h> #in ...
- Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备二)
接下来,我们继续分析UIlib.h文件中余下的文件,当然部分文件可能顺序错开分析,这样便于从简单到复杂的整个过程的里面,而避免一开始就出现各种不理解的地方. 1. UIManager.h:UI管理器, ...
- 比较完整的WebView的用法
WebView, WebChromeClient和WebViewClient加载网页基本用法 webview是android中的浏览器控件,在一些手机应用中常会用到b/s模式去开发应用,这时webvi ...
- cout输出控制——位数和精度控制
刷到一道需要控制输出精度和位数的题目 刚开始以为单纯使用 iomanip 函数库里的 setprecision 就可以,但 OJ 给我判了答案错误,后来一想这样输出并不能限制位数只能限制有效位数. 比 ...
- 《DSP using MATLAB》示例Example5.21
- Redis——学习之路四(初识主从配置)
首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...
- 动作手游实时PVP技术揭密(服务器篇)
前言 我们的游戏是一款以忍者格斗为题材的ACT游戏,其主打的玩法是PVE推图及PVP 竞技.在剧情模式中,高度还原剧情再次使不少玩家泪目.而竞技场的乐趣,伴随着赛季和各种赛事相继而来,也深受玩家喜爱, ...
- 杨氏矩阵定义及其查找的实现C++
先介绍一下这个数据结构的定义,Young Tableau有一个m*n的矩阵,然后有一数组 a[k], 其中 k<=m*n ,然后把a[k]中的数填入 m*n 的矩阵中,填充规则为: 1. 每一 ...
- R内存管理与垃圾清理
1.内存查看 memory.limit():查看内存大小 memory.limit(n):申请内存大小 memory.size(NA):查看内存大小 memory.size(T):查看已分配的内存 m ...
- 洛谷 P1466 集合 Subset Sums Label:DP
题目描述 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的.举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子 ...