美文网首页Git
Git简易指南

Git简易指南

作者: Eastboat | 来源:发表于2020-01-17 09:39 被阅读0次

Git

Git 属于分散型版本管理系统,是为版本管理而设计的软件

Subversion 集中型版本管理系统

image.png

集中型将所有数据集中存放在服务器当中,有便于管理的优点。但是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码,开发也就几乎无法进行

Git 分散型版本管理系统

GitHub 将仓库 Fork 给了每一个用户。Fork 就是将 GitHub 的某个特定仓库复制到
自己的账户下。Fork 出的仓库与原仓库是两个不同的仓库

只要脑中掌握了多个仓库并存的概念,学习分散型并不是什么难事

image.png

如图所示,分散型拥有多个仓库,相对而言稍显复杂。不过,由于本地的开发环境中就有仓库,所以开发者不必连接远程仓库就可以进行开发

安装Git

初始设置

设置姓名和邮箱地址

$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@example.com"

会在“~/.gitconfig”中以如下形式输出设置文件

[user]
name = Firstname Lastname
email = your_email@example.com

提高命令输出的可读性

将 color.ui 设置为 auto 可以让命令的输出拥有更高的可读性

git config --global color.ui auto

“~/.gitconfig”中会增加下面一行。

[color]
ui = auto

注册GitHub

设置 SSH Key

GitHub 上连接已有仓库时的认证,是通过使用了 SSH 的公开密钥认证方式进行的。现在让我们来创建公开密钥认证所需的 SSH Key,并将其添加至 GitHub

$ ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回车键
Enter passphrase (empty for no passphrase): 输入密码
Enter same passphrase again: 再次输入密码

输入密码后会出现以下结果

Your identification has been saved in /Users/your_user_directory/.ssh/id_rsa.
Your public key has been saved in /Users/your_user_directory/.ssh/id_rsa.pub.
The key fingerprint is:
fingerprint值 your_email@example.com
The key's randomart image is:
+--[ RSA 2048]----+
| .+ + |
| = o O . |

id_rsa 文件是私有密钥,id_rsa.pub 是公开密钥。

添加公开密钥

在 GitHub 中添加公开密钥,今后就可以用私有密钥进行认证了

点击右上角的账户设定按钮(Account Settings),选择 SSH Keys 菜单。点击 Add SSH Key 之后,会出现如图 3.2 的输入框

image.png

Key 部分请粘贴 id_rsa.pub 文件里的内容。id_rsa.pub的内容可以用如下方法查看

image.png
$ cat ~/.ssh/id_rsa.pub
ssh-rsa 公开密钥的内容 your_email@example.com

验证

添加成功之后,创建账户时所用的邮箱会接到一封提示“公共密钥添加完成”的邮件,完成以上设置后,就可以用手中的私人密钥与 GitHub 进行认证和通信了

$ ssh -T git@github.com
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is fingerprint值 .
Are you sure you want to continue connecting (yes/no)? 输入yes
image.png

实际操作

创建仓库

  1. Repository name 输入仓库的名称
  2. Description 仓库的说明 不是必需项
  3. Public、Private
  4. README 如果想向 GitHub 添加手中已有的 Git 仓库,建议不要勾选,直接手动 push
  5. Add .gitignore 不需要在Git仓库中进行版本管理的文件记录

连接仓库

https://github.com/用户名/Hello-Word

一般会在这个文件中标明本仓库所包含的软件的概要、使用流程、许可协议等信息。如果使用Markdown 语法进行描述,还可以添加标记,提高可读性

公开代码

  1. clone 已有仓库
git clone git@github.com:hirocastest/Hello-World.git
  1. 编写代码
  2. 提交
git add .
git commit -m '提交信息'
git push
git log 

学习Git

基本操作

git int——初始化仓库

git init命令的目录下就会生成 .git 目录。这个 .git 目录里存储着管理当前目录内容所需的仓库数据

$ mkdir git-tutorial
$ cd git-tutorial
$ git init

我们将这个目录的内容称为“附属于该仓库的工作树”。
文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件
的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前
的快照,在工作树中打开。开发者可以通过这种方式获取以往的文件

git status——查看仓库的状态

git add——向暂存区中添加文件

git commit——保存仓库的历史记录

  • 中止提交:如果在编辑器启动后想中止提交,请将提交信息留空并直接关闭编
    辑器,随后提交就会被中止

git log——查看提交日志

  • 只显示提交信息的第一行
$ git log --pretty=short
  • 只显示指定目录、文件的日志
$ git log README.md
  • 显示文件的改动
$ git log -p

比如,执行下面的命令,就可以只查看 README.md 文件的提交日
志以及提交前后的差别

$ git log -p README.md

git diff——查看更改前后的差别

  • 查看工作树和暂存区的差别

“+”号标出的是新添加的行,被删除的行则用“-”号标出

git diff
  • 查看工作树和最新提交的差别

好习惯:在执行 git commit命令之前先执行git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交。这里的 HEAD 是指向当前分支中最新一次提交的指针

$ git diff HEAD

分支的操作

灵活运用分支,可以让多人同时高效地进行并行开发

从 master 分支创建 feature - A 分支和 fix - B 分支,每个分支中都拥有自己的最新代码。master 分支是 Git 默认创建的分支,因此基本上所有开发都是以这个分支为中心进行的

image.png

不同分支中,可以同时进行完全不同的作业,等该分支的作业完成之后再与 master 分支合并。比如 feature-A 分支的作业结束后与 master合并

image.png

git branch——显示分支一览表

$ git branch

git checkout  -b——创建、切换分支

$ git checkout -b feature-A
$ git branch feature-A
$ git checkout feature-A

//说明当前分支切换到了feature-A下了
$ git branch  
* feature-A
master
  • 切换到 feature - A 分支并进行提交

        $ git add README.md
        $ git commit -m "Add feature-A"
        [feature-A 8a6c8b9] Add feature-A
        1 file changed, 2 insertions(+)
    
  • 切换到 master 分支

    eature-A 分支的更改不会影响到master 分支,这正是在开发中创建分支的优点.只要创建多个分支,就可以在不互相影响的情况下同时进行多个功能的开发。
    bash $ git checkout master

  • 切换回上一个分支

    "-”(连字符)代替分支名,就可以切换至上一个分支。当然,将“-”替换成 feature-A 同样可以切换到 feature-A 分支
    bash $ git checkout -

特性分支

顾名思义,是集中实现单一特性(主题),除此之外不进行任何作业的分支

之前我们创建了 feature-A 分支,这一分支主要实现 feature-A,除feature-A 的实现之外不进行任何作业。即便在开发过程中发现了 BUG,也需要再创建新的分支,在新分支中进行修正

主干分支

主干分支是刚才我们讲解的特性分支的原点,同时也是合并的终点。通常人们会用 master 分支作为主干分支

git merge——合并分支

假设 feature-A 已经实现完毕,想要将它合并到主干分支 master 中

$ git checkout master
Switched to branch 'master'

$ git merge --no-ff feature-A

git log  -- graph——以图表形式查看分支

git log --graph命令也可以用图表形式输出提交日志,非常直观

更改提交的操作

git reset——回溯历史版本

为了让各位熟悉对历史版本的操作,我们先回溯历史版本,创建一个名为 fix-B 的特性分支

image.png
1. 回溯到创建 feature - A 分支前

要让仓库的 HEAD、暂存区、当前工作树回溯到指定状态,需要用到 git rest --hard命令

$ git reset --hard fd0cbf0d4a25f747230694d95cac1be72d33441d

我们已经成功回溯到特性分支(feature-A)创建之前的状态

2. 创建 fix - B 分支
在 README.md 文件中添加一行文字

$ git checkout -b fix-B
$ git add README.md
$ git commit -m "Fix B"

3. 主干分支合并 feature-A 分支的修改后,又合并了 fix-B 的修改

image.png

4. 推进至 feature - A 分支合并后的状态

git log命令只能查看以当前状态为终点的历史日志

即便开发者错误执行了 Git 操作,基本也都可以利用 git reflog命令恢复到原先的状态,

消除冲突

git merge --no-ff fix-B

系统告诉我们 README.md 文件发生了冲突(Conflict)。系统在合并 README.md 文件时,feature-A 分支更改的部分与本次想要合并的 fix-B 分支更改的部分发生了冲突

查看冲突部分并将其解决
在编辑器中将其改成想要的样子

提交解决后的结果
冲突解决后,执行 git add命令与 git commit命令。

git commit  -- amend——修改提交信息

在合并特性分支之前,如果发现已提交的内容中有些许拼写错误等,不妨提交一个修改,然后将这个修改包含到前一个提交之中,压缩成一个历史记录。这是个会经常用到的技巧

推送至远程仓库

远程仓库顾名思义,是与我们本地仓库相对独立的另一个仓库

为防止与其他仓库混淆,仓库名请与本地仓库保持一致

  1. git remote add——添加远程仓库

Git 会自动将远程仓库的名称设置为 origin(标识符)

git remote add origin git@XXXXXX
  1. git push——推送至远程仓库

如果想将当前分支下本地仓库中的内容推送给远程仓库,需要用到git push命令。现在假定我们在 master 分支下进行操作,像这样执行 git push命令,当前分支的内容就会被推送给远程仓库origin 的 master分支

git push -u origin master

除了 master 分支之外,远程仓库也可以创建其他分支

我们在本地仓库中创建 feature-D 分支,并将它以同名形式 push 至远程仓库

$ git checkout -b feature-D
Switched to a new branch 'feature-D'

我们在本地仓库中创建了 feature-D 分支,现在将它 push 给远程仓库并保持分支名称不

$ git push -u origin feature-D

相关文章

  • git学习之好文推荐

    简单入门git - 简易指南 官方中文文档git-book

  • git - 简易指南(最简洁明了)

    http://www.bootcss.com/p/git-guide/ git - 简易指南 助你开始使用 git...

  • Git [提交记录查看、提交、变基](I)

    Git 简易指南Git 参考手册Pro Git(中文版)Git教程 廖雪峰 查看提交记录 终端命令git log:...

  • git简易指南

    助你开始使用 git 的简易指南,木有高深内容,;)。 安装 git for windowsgit for OSX...

  • git-使用指南

    这里推荐一下外国友人的使用指南。做的非常棒。git 使用简易指南☜

  • git - 简易指南

    一、安装与配置 下载git OSX版 下载git Windows版 下载git Linux版 安装完成后需要配置环...

  • Git简易指南

    今天来分享一下我在使用Git的过程中经常用到的一些命令: 1、创建新仓库 2、检出仓库 3、添加与提交 4、推送改...

  • git - 简易指南

    http://www.bootcss.com/p/git-guide/

  • git - 简易指南

    安装下载 git OSX 版下载 git Windows 版下载 git Linux 版 创建新仓库创建新文件夹,...

  • git简易指南

    创建新仓库 创建新文件夹,打开,然后执行 以创建新的 git 仓库。 检出仓库 执行如下命令以创建一个本地仓库的克...

网友评论

    本文标题:Git简易指南

    本文链接:https://www.haomeiwen.com/subject/zkhczctx.html