Git 是一种版本控制工具,也叫作版本管理软件(分布式管理软件)。这里介绍Git的基本使用步骤,关于 Git 更详细的介绍,读者可以参考其官方网站提供的文档。

1  安装Git


在Ubuntu系统中安装Git工具:

# sudo apt-get install git

如果是第一次使用 Git,需要进行如下设置:

# git config --global user.name "laoyao"
# git config --global user.email "319807036@qq.com"

2  创建本地版本库


在建立开源项目之初,需要在本地创建一个空的版本库。先新建一个开源项目的工作目录,并进入该目录使用 git init 命令创建本地版本库,具体命令如下:

# mkdir –p /home/laoyao/git
# cd /home/laoyao/git
# git init

执行完 git init 命令会有如下信息输出,而且会创建隐藏目录.git,在.git 里面存放了初始状态的文件和子目录,以后随着版本库的变化,这些文件和目录会随之变化。

初始化空的 Git 仓库于 /home/laoyao/git/.git/ 

3  向本地版本库提交文件


实际上 Git 不仅可以管理代码,还可以管理所有不含图片的文本文件。要向版本库提交文件必须先进入之前建立的开源项目的工作目录,然后新建文件或者修改文件,这里的文件包括代码文件和一般的文本文件。这里新建一个 helloworld.txt。

# cd /home/laoyao/git
# echo “Welcome to Ubuntu & Git” > helloworld.txt

使用 git add 命令将文件添加到本地版本库的索引中:

# git add ./helloworld.txt

使用 git commit 命令提交文件到版本库:

# git commit -m ‘this is first file.’

其中的 -m 选项是本次提交的备注必须指定该信息,否则 Git 会自动调用系统默认的文本编辑器让用户输入该备注信息才开始提交修改后的文件到本地版本库。之后会有如下信息输出表示提交成功:

[master (根提交) afb289c] this is first file.
1 file changed, 1 insertion(+)
create mode 100644 helloworld.txt

4  查看日志信息


当每一次向版本库提交修改后的文件以后,都会将版本库变动信息以及文件版本信息写入日志文件中,我们只需要知道使用 git log 命令可以查看日志信息以及查阅备注 ID。查看普通日志信息的命令就是:

# git log

显示如下信息,表示提交文件的作者及其邮箱地址和提交的时间。

commit afb289cd1204b71d7ff209b4db879ce6c2b403ff
Author: laoyao <319807036@qq.com>
Date:   Sun Jan 28 04:26:23 2018 +0800

    this is first file.

要想查看备注 ID(commit id)只需要使用如下命令:

# git log --pretty=oneline

显示如下信息:

afb289cd1204b71d7ff209b4db879ce6c2b403ff this is first file.

前面的一长串就是 commit id,后面的文字则是备注(注释)信息,我们使用 commit id 的时候可以只使用开头的前几个即可,一般选取前六位,如果要使这里的 commit id 的话,我们只需要使用 afb289 即可。

5  创建本地分支


现在的开源项目,一般都是多人合作,那么每一个成员都有可能会修改源代码,为了便于管理是谁修改的,修改的是什么地方的代码,Git 提出了分支的概念。也就是说为每一处的修改建立一个分支,这样有一个人负责审核测试,测试通过以后合并到主分支。在创建本地分支之前先使用 git branch 查询一下当前本地库中有哪些分支。

# git branch

显示如下信息:

* master

然后使用如下命令创建一个新的本地分支 new-branch,这里的新分支名读者可以自行决定:

# git branch new-branch

再次使用 git branch 命令查看分支的时候,显示的所有分支如下:

* master
  new-branch

分支前面的星号表示当前工作目录在哪个分支下,使用 git commit 命令会将修改后的文件提交到工作目录当前所在的分支。要删除一个分支可以使用如下命令,请谨慎操作!

# git branch -D new-branch

6  切换本地分支


本地分支是为了隔离主分支不同部分的修改,使用 git checkout + 分支名可以在不同的本地分支之间来回切换,比如现在从 master 分支切换到 new-branch 分支用如下命令:

# git checkout new-branch

这时再用 git branch 查看分支情况的时候,就有如下信息输出:

  master
* new-branch

表明当前工作目录所处的分支是 new-branch 分支。除了切换分支以外,checkout 还可以直接提取文件,使用方法是:

# git checkout + 文件名

即可将当前所在分支对应的而文件提取到工作目录,或者覆盖工作目录的源文件,这就是常用到的文件版本恢复过程,这是针对具体的某一个文件的版本恢复方法。还可以配合 commit id 将一个项目所有文件恢复到某个版本,即:

# git checkout + commit id

另外恢复版本还有一个方法是使用 git checkout 配合版本标签,版本标签的获取可以使用 git tag 命令,同时创建版本标签也是使用 git tag 命令。

# git tag

使用该命令的前提是版本库中添加了标签信息。之后使用如下命令来恢复项目代码的某个版本:

# git checkout + 版本标签名

7  在 GitHub 创建开源项目


要想和不同地区的人共享你的源代码,就要把你的代码放到远程的代码托管起上面,GitHub 是目前比较流行的 Git 托管服务提供商,有免费使用的权限,也提供一定的付费服务。在使用 GitHub 之前,需要先登录其官网注册一个免费使用的账号,登录 https://github.com/,登录 GitHub,开始创建新的工程,直接点击右侧的“New repository”标签即可新建一个开源项目:

然后在新建 repository 的页面中,依次填入 repository 名称以及对项目的描述和选择项目是否公开,这里要选择公开,还可以选择项目遵循的许可协议,我们选择的是 GPLv3(可以不选),具体的设置如图所示,最后点击“Create repository”完成开源项目的创建。  

创建完毕以后显示如图所示页面,里面便是一个只有许可协议文件和 README 文件的空项目(空版本库),还只是一些初始化的文件,需要用户从本地版本库同步到该远程的 GitHub 版本库。

8  上传代码到 GitHub


先在开源项目的工作目录中执行如下命令确认你的身份:

# git config --global user.email "读者注册 GitHub 使用的邮箱"
# git config --global user.name  "读者注册 GitHub 使用的用户名"

然后使用如下命令生成 SSH Key:

# ssh-keygen -t rsa -C "读者注册 GitHub 使用的邮箱"

执行上述命令以后会要求你做一些输入和选择,一开始让你确认是否将 SSH Key 文件存放到~/.ssh 目录,如果已经存在该目录,且该目录已经有了 SSH Key,会询问用户是否覆盖。接下来让你输入密码,注意输入密码的时候没有回显,接着是再次输入密码,两次密码都是注册 GitHub 时候的登陆密码,如果一切正常,会出现如图所示的信息,然后在~/.ssh 目录会生成 id_rsa 和 id_rsa.pub 两个文件,它们是 SSH Key 的秘钥对。 id_rsa是私钥,不能泄露出去;id_rsa.pub 是公钥,可以放心地告诉任何人。

用文本编辑器打开 id_rsa.pub 文件,将里面的内容全部复制(注意不要修改任何内容,包括空格和空行和制表符,什么都不要改),使用 Ctr+ A 即可全选,使用 Ctr +C 即可复制。然后回到图中所示的页面中找到设置 SSH Key 的入口,即在右上角点击下拉箭头,如图所示:

然后点击 seetings,在新页面左侧选择 SSH and GPG keys,在右侧点击”New SSH key“,在下方输入 Title 以及 Key,Title 随便填写,Key 选项的输入框就粘贴刚刚从 id_rsa.pub 复制的内容。如图所示,然后单击“Add SSH key”按钮即可添加一个 public key。

设置完 SSH key 以后,可用如下命令检测公钥、秘钥以及上述步骤的设置是否正确:

# ssh -T git@github.com

如果提示用户如下信息:

The authenticity of host 'github.com (192.30.255.113)' can't be established.

会要求用户选择是否继续连接,这时候用户输入“yes”,回车继续连接到 github.com,然后要求输入登陆 GitHub 使用的密码,输入以后回车,即可显示出设置 SSH key 成功的信息,具体的信息如下所示:

Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts.
Hi jianweiyao! You've successfully authenticated, but GitHub does not provide shell access.
问题:为什么 GitHub 需要 SSH Key 呢?
因为 GitHub 需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而 Git 支持 SSH 协议,所以,GitHub 只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub 允许你添加多个 Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的 Key 都添加到 GitHub,就可以在每台电脑上往 GitHub 推送 了。最后友情提示,在 GitHub 上免费托管的 Git 仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。

在项目的主页中,点击 HTTPS 和 SSH 下拉框,确保选择的是 SSH 协议(GitHub 也支持 HTTPS 地址),我们这里使用的 SSH 协议,输入框的全部内容就是该项目的 URL(矩形框内的内容),具体的如图所示:

使用 git remote 命令设置项目在 GitHub 的 URL:

# git remote add origin git@github.com:jianweiyao/helloworld.git

其中 origin 表示的是远程代码库的仓库名字,可以自己定义,同时这个命令将本地代码库和 GitHub 远程代码库关联起来。还需要使用如下命令使得远程代码库的 README 等文件和本地代码库一致,否则不能执行 git push。

# git pull --rebase origin master

使用下述命令将本地版本库主分支(master)中的文件上传到 GitHub,其中 -u 选项是第一次 push 的时候使用,将本地和远程的 master 分支关联起来,并同步文件,以后就可以简化命令。

# git push -u origin master

其中 master 表示的是远程版本库(origin)的主分支,如果上传成功会有如下提示信息:

对象计数中: 3, 完成.
Delta compression using up to 8 threads.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (3/3), 345 bytes | 0 bytes/s, 完成.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:jianweiyao/helloworld.git
   aada24e..27c167a  master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

执行如下命令查看所有分支,发现多了 remotes/origin/master 远程版本库分支:

# git branch -a

打开 GitHub 的项目主页面,刷新一下即可看见刚刚上传的文件:

9  从 GitHub 下载源代码


Git 可以使用 http 地址或者 SSH 指定 URL 来下载存放到 GitHub 上的代码,笔者使用的是 http 的 URL。使用如下命令下载整个项目的源代码:

# git clone https://github.com/jianweiyao/helloworld.git

下载完成后会在当前目录多了一个 helloworld 目录,该目录内容与之前在 GitHub 上建立并同步本地版本库的一模一样,也包含了一个隐藏的 .git 本地版本库目录。如果只是想获取某一个分支的最新内容,只需使用如下命令,表示其远程版本库 origin 的 master 分支的最新内容。

Git工具的使用教程的更多相关文章

  1. Git工具的使用教程二

    1.3时光穿梭机--版本回退 版本回退分为两步骤进行操作: 步骤: 1.查看版本,确定需要回到的时候点     指令:             git log             git log ...

  2. (转)前端构建工具gulp入门教程

    前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具 ...

  3. Git配置安装使用教程操作github上传克隆数据

    Git是何方神圣? Git是用C语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状态可以是不同的文件,也可以是不同的文件内容 ...

  4. git常用命令说明教程

    git常用命令说明教程 git介绍 是一个分布式的,版本控制软件.每台使用git的电脑都是一个分版本库.svn是集中管理的. 安装git 一 git相关操作 1.官网下载最新版安装https://gi ...

  5. Git 安装和使用教程

    Git 安装和使用教程 git 提交 全部文件 git add .  git add xx命令可以将xx文件添加到暂存区,如果有很多改动可以通过 git add -A .来一次添加所有改变的文件.注意 ...

  6. IDEA内置git功能的使用教程

    IDEA内置git功能的使用教程 IDEA git  IDEA被公认为是最好的java开发工具,除了在代码助手.代码提示.重构工具等方面有比较好的支持,还在各类版本控制工具(git.tfs.svn.g ...

  7. git工具学习

    最近实习的时候,遇到git工具,发现好强大之前没用过,特来学习下,然后自己注册了一个github账号,结合git命令练习一下,git的安装就不说了. 学习资料来源:廖雪峰Git教程 git简介: gi ...

  8. Git 安装和使用教程(更加详细)

    转载至:https://www.cnblogs.com/smuxiaolei/p/7484678.html#undefined Git 安装和使用教程 git 提交 全部文件 git add .  g ...

  9. Git Submodule使用完整教程

    Git Submodule功能刚刚开始学习可能觉得有点怪异,所以本教程把每一步的操作的命令和结果都用代码的形式展现给大家,以便更好的理解. 1.对于公共资源各种程序员的处理方式 每个公司的系统都会有一 ...

随机推荐

  1. C#winform程序关闭计算机的正确姿势

    /// <summary> /// 计算机电源控制类 /// </summary> public class EnvironmentCheckClass { [DllImpor ...

  2. tensorflow核心概念和原理介绍

    关于 TensorFlow TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库. 节点(Nodes)在图中表示数学操作,图中的线(edges)则表示 ...

  3. 冒泡算法给0~9随机n位数字排序

    <?php //产生5位0~9的随机数      function getRand($begin=0,$end=9,$limit=5){                $rand_array=r ...

  4. Updates were rejected because the remote contains work that you do(git报错解决方案)

    Updates were rejected because the remote contains work that you do(git报错解决方案) 今天向GitHub远程仓库提交本地项目文件时 ...

  5. .NET Core单文件发布静态编译AOT CoreRT

    .NET Core单文件发布静态编译AOT CoreRT,将.NET Core应用打包成一个可执行文件并包含运行时. 支持Windows, MacOS and Linux x64 w/ RyuJIT ...

  6. .net的retrofit--WebApiClient库

    # 库简介 WebApiClient是开源在github上的一个httpClient客户端库,内部基于HttpClient开发,是一个只需要定义c#接口(interface),并打上相关特性,即可异步 ...

  7. zz:linux下rz,sz的安装方法

    zz:http://xukaizijian.blog.163.com/blog/static/1704331192011611104631875/ wget http://ohse.de/uwe/re ...

  8. 浅谈Android的广告欢迎界面(倒计时)

    前些时候就是别人问我他的android APP怎么做一个广告的欢迎界面,就是过几秒后自动跳转到主界面的实现. 也就是下面这种类似的效果.要插什么广告的话你就换张图吧. 那么我就思考了下,就用了andr ...

  9. [已解决]IndentationError: unindent does not match any outer indentation level

    最近跟同事合作代码没有用git进行协同,很多代码拷贝后进行粘贴,常常报以上错误. 经过查询发现是空格跟tab混合使用了,重新将代码的缩进手动调整下就好了.

  10. 分析uboot中 make xxx_config过程

    make xxx_config实质上就是调用了 首先看MKCONFIG: [注意]SRCTREE=源文件下的目录 之后的语句: @$(MKCONFIG) $(@:_config=) arm arm92 ...