git和github在ubuntu上的使用

来源:互联网 发布:java房卡麻将游戏源码 编辑:程序博客网 时间:2024/06/05 18:23

git是一个应用最广泛的分布式版本控制系统,github是提供远程git仓库托管服务的网站。下面简单介绍git和github在ubuntu上的安装和使用,主要参考的廖雪峰的git教程和github官网的教程。

1. git安装与配置

ubuntu系统不自带git,需要自己安装:

sudo apt-get install git

安装完成后,要设置用户名和邮箱地址:

git config --global user.name "YOUR NAME"git config --global user.email "YOUR EMAIL ADDRESS"

2. 创建本地版本库

查看git有哪些指令,输入git:

最常用的 git 命令有:   add        添加文件内容至索引   bisect     通过二分查找定位引入 bug 的变更   branch     列出、创建或删除分支   checkout   检出一个分支或路径到工作区   clone      克隆一个版本库到一个新目录   commit     记录变更到版本库   diff       显示提交之间、提交和工作区之间等的差异   fetch      从另外一个版本库下载对象和引用   grep       输出和模式匹配的行   init       创建一个空的 Git 版本库或重新初始化一个已存在的版本库   log        显示提交日志   merge      合并两个或更多开发历史   mv         移动或重命名一个文件、目录或符号链接   pull       获取并整合另外的版本库或一个本地分支   push       更新远程引用和相关的对象   rebase     本地提交转移至更新后的上游分支中   reset      重置当前HEAD到指定状态   rm         从工作区和索引中删除文件   show       显示各种类型的对象   status     显示工作区状态   tag        创建、列出、删除或校验一个GPG签名的 tag 对象

下面git的使用过程中都是调用上面的指令来完成的,首先新建文件夹创建一个新的版本库(或仓库,repository):

mkdir learngitcd learngit

然后git仓库初始化:

git init

在文件夹中添加文件,比如:classification.cpp,然后可以添加文件到git仓库,分两步进行:
第一,用git add命令告诉git,将文件添加到仓库:

git add classification.cpp

第二,用git commit命令告诉git,将文件提交到仓库:

git commit -m "add a new file"

其中-m后面的命令是对本次提交的说明。

为啥添加过程不能用一条git commit命令来完成呢,这儿涉及一个工作区和暂存区的概念。工作区是电脑能看到的目录,比如learngit文件夹是一个工作区(如下图左所示)。在learngit文件夹有个隐藏目录.git,不属于工作区,而是git的版本库,版本库中重要的两部分是暂存区(下图中),和创建的第一个分区master(下图右)。

这里写图片描述

然后,上面的两步所做的工作分别为:
第一步,git add将文件修改添加到暂存区;
第二步,git commit提交更改,即将暂存区的内容提交到当前分支;

我们创建版本库时,git自动创建了master分支,git comit即将往master分支上提交更改。可以理解为需要提交的文件修改全部放到暂存区,然后一次性提交暂存区的修改。

3. 添加到远程仓库(github)

git是分布式版本控制系统,同一个git仓库可以分布到不同的机器上,这儿的机器,可以指公司的git服务器或者github,下面以github为例,介绍怎样将本地git仓库添加到远程仓库。

本地仓库和github的连接有两种方式:

  • HTTPS连接(比如地址为:https://github.com/dumengnanbuaa/learngit.git);
  • SSH连接(比如地址为:git@github.com:dumengnanbuaa/learngit.git);

3.1 SSH连接

SSH加密传输首先要有SSH key,生成过程包括:
第一步,创建SSH key。输入下面指令:

ssh-keygen -t rsa -C "youremail@example.com"

之后可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第二步,登陆GitHub,打开“Account settings”,“SSH Keys”页面,然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。

需要注意的是,github允许添加多个SSH Keys,假定我们有自己的笔记本和实验室/办公室的电脑,需要将每台电脑的key添加到github,然后可以使用每台电脑往github推送了。

然后,在github上创建一个名为learngit的空的仓库(不包含REANME文件)。
将本地仓库与github仓库相关联并推送内容包含下面两步:
第一,输入下面命令:

git remote add origin git@github.com:dumengnanbuaa/learngit.git

其中,origin代表远程库,是git的默认叫法。
第二,将本地库内容推送到远程库:

git push -u origin master

由于远程库是空的,第一次推送master分支时,加上了-u参数,git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

这样,我们在github上得到了和本地仓库相同的仓库。
修改本地仓库内容后,再次推送到远程github仓库时,即可输入简化的命令:

git push origin master

3.2 HTTPS连接

使用HTTPS连接的不同之处在于:其一,不需要SSH key;其二,上面第一条命令地址要改为HTTP地址:

git remote add origin https://github.com/dumengnanbuaa/learngit.git

其他步骤相同。HTTPS连接因为不需要SSH key,步骤简单,也是github推荐的连接方式,然而其缺点为速度比SSH连接方式慢。

4. 从远程仓库(github)克隆

上一节介绍先有本地库,后有远程库的时候,如何关联远程库。假设我们从零开发,最好的方式是先创建远程库,然后,从远程库克隆。

首先在github上创建一个新的仓库,仓库名为learngit,这次要勾选Initialize this repository with a README。

远程库已经准备好了,下一步是用命令git clone克隆一个本地库,也分两种方式。
SSH连接克隆命令为:

git clone git@github.com:dumengnanbuaa/learngit.git

HTTP连接克隆命令为:

git clone https://github.com/dumengnanbuaa/learngit.git

在本地仓库修改完代码后,推送到github库的指令和上一节相同:

git push origin master

5. 其他常用git指令

在本地仓库使用的常见git命令包括:

  • git status命令查看仓库当前的状态;
  • git diff file 命令查看文件两次修改之间的变化;
  • git log命令显示所有的提交日志;
  • git reset命令回退到之前的版本。

6. 总结

实践中,常用开发流程:从零开发,最好的方式是先创建远程库,然后,从远程库克隆。
第一,在github上创建一个新的仓库,仓库名为learngit,勾选Initialize this repository with a README;
第二,HTTP连接克隆到本地:

git clone https://github.com/dumengnanbuaa/learngit.git

第三,修改本地仓库代码,完成后,用git add .命令告诉git,将所有文件修改添加到仓库:

git add .

第四,用git commit命令告诉git,将文件提交到仓库:

git commit -m "add a new file"

第五,推送到远程github仓库:

git push origin master
2 0
原创粉丝点击