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
- git和github在ubuntu上的使用
- 在 mac 上使用 Git 和 GitHub 连接
- 在 mac 上使用 Git 和 GitHub 连接
- 在 mac 上使用 Git 和 GitHub 连接
- git与github在ubuntu下的使用
- git与github在ubuntu下的使用
- git与github在ubuntu下的使用
- git与github在ubuntu下的使用
- git与github在ubuntu下的使用
- git与github在ubuntu下的使用
- git与github在ubuntu下的使用
- git与github在ubuntu下的使用
- 在Github和Git上的fork之简单指南
- 在Ubuntu 上使用git
- 在ubuntu上使用git
- 在mac上使用github--设置git
- 在mac上使用github--设置git
- 使用Git在GitHub上管理代码
- java多进程中waitFor()的作用
- 如何解决Android sdk tool的下载不成功的问题
- ubuntu 安装jdk
- bzoj3892: [Usaco2014 Dec]Marathon
- 类之间互相引用
- git和github在ubuntu上的使用
- 寄存器、RAM、ROM、Flash相关概念区别整理
- 剑指offer第三十题【连续子数组的最大和】c++实现
- 【编译原理】概述总结(一)
- 队列的基本操作(链表)
- 机器人操作系统ROS(indigo)与三维仿真软件V-Rep(3.2.1)通信接口使用笔记
- 从并行计算到云计算
- 1、web应用安全
- 常用的Hql语句