Github了解--Git指令


title: Github了解–Git指令
date:
tags: [Giehub学习, Git指令]
categories: [Git,Github,学习]
copyright: true

前言

Git 仓库管理功能是 GitHub 的核心。因此,使用 GitHub 之前必须先掌握 Git 的相关知识,同时本地的设备还要安装 Git 的环境。这篇文章就写写安装使用 Git 所需的知识及各种设置。

Git 安装

  • 最近的 Mac os 中都预装了 Git。而各版本的 Linux 中也都以软件包(Package)的形式提供给用户了,所以可以直接使用而不需要安装。
  • 在 Wi n d o w s 环境中,最简单快捷的方法是使用 msysGitA 。请按 照 Downloads 的 向 导 下 载 安 装 包。安装包下载完毕后,只要双击运行,按照向导一步步安装即可。
    &nbsp顺利安装好 msysGit 之后,Git Bash 会作为一个应用程序添加进系统,接下来请启动它。双击之后,会弹出一个名为 Git Bash 的命令提示符,它附属于 msysGit。

Git 初始设置

首先来设置使用 Git 时的姓名和邮箱地址。名字要用英文输入。

$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "[email protected]"
这个命令,会在“~/.gitconfig”中以如下形式输出设置文件。
[user]
name = Firstname Lastname
email = [email protected]

使用前的设置

  • 在Github创建账户,并完善个人信息
  • 设置 SSH Key(这个比较重要,用于仓库链接)

运行下面的命令创建 SSH Key

$ ssh-keygen -t rsa -C "[email protected]"
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: 再次输入密码
[email protected]”的部分请改成您在创建账户时用的邮箱地址。密码需要在认证时输入,请选择复杂度高并且容易记忆的组合。
输入密码后会出现以下结果。
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值 [email protected] The key's randomart image is:
+--[ RSA 2048]----+

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

添加公开密钥

在 GitHub 中添加公开密钥,今后就可以用私有密钥进行认证了。点击右上角的账户设定按钮(Account Settings),选择 SSH Keys 菜单。点击 Add SSH Key 之后,会出现输入框。在 Title 中输入适当的密钥名称。Key 部分请粘贴 id_rsa.pub 文件里的内容。id_rsa.pub的内容可以用如下方法查看。
$ cat ~/.ssh/id_rsa.pub
ssh-rsa 公开密钥的内容 [email protected]

SSH Keys添加成功之后,创建账户时所用的邮箱会接到一封提示“公共密钥
添加完成”的邮件。

完成以上设置后,就可以用手中的私人密钥与 GitHub 进行认证和
通信了。可以用下面代码试试有木有成功。
$ ssh -T [email protected]
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

出现如下结果即为成功。
Hi hirocastest! You've successfully authenticated, but GitHub does not provide shell access.

Git 基础操作

git init——初始化仓库

要使用 Git 进行版本管理,必须先初始化仓库。Git 是使用git init命令进行初始化的。请实际建立一个目录并初始化仓库。

$ mkdir git-tutorial
$ cd git-tutorial
$ git init
Initialized empty Git repository in /Users/hirocaster/github/github-book /git-tutorial/.git/

如果初始化成功,执行了 git init命令的目录下就会生成 .git 目录。这个 .git 目录里存储着管理当前目录内容所需的仓库数据。在 Git 中,我们将这个目录的内容称为“附属于该仓库的工作树”。文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前
的快照,在工作树中打开。开发者可以通过这种方式获取以往的文件。

clone 已有仓库

$ git clone [email protected]:hirocastest/Hello-World.git
Cloning into 'Hello-World'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
$ cd Hello-World
这里会要求输入 GitHub 上设置的公开密钥的密码。认证成功后,仓库便会被 clone 至仓库名后的目录中。将想要公开的代码提交至这个仓库再 push 到 GitHub 的仓库中,代码便会被公开。

git status——查看仓库的状态

git status命令用于显示 Git 仓库的状态。工作树和仓库在被操作的过程中,状态会不断发生变化。在 Git 操作过程中时常用 git status命令查看当前状态,可谓基本中的基本。下面,就让我们来实际查看一下当前状态。

$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

结果显示了我们当前正处于 master 分支下。关于分支我们会在后面博客里写,现在不必深究。接着还显示了没有可提交的内容。所谓提交(Commit),是指“记录工作树中所有文件的当前状态”。尚没有可提交的内容,就是说当前我们建立的这个仓库中还没有记录任何文件的任何状态。这里,我们建立 README.md 文件作为管理对
象,为第一次提交做前期准备。

$ touch README.md
$ git status
# On branch master
#
# Initial commit
`## Untracked files:#`

(use “git add …” to include in what will be committed)##README.mdnothing added to commit but untracked files present (use “git add” to
track)`

可以看到在 Untracked files 中显示了 README.md 文件。类似地,只要对 Git 的工作树或仓库进行操作,git status命令的显示结果就会发生变化。

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

如果只是用 Git 仓库的工作树创建了文件,那么该文件并不会被记入 Git 仓库的版本管理对象当中。因此我用 git status命令查看README.md 文件时,它会显示在 Untracked files 里。要想让文件成为 Git 仓库的管理对象,就需要用 git add命令将其加入暂存区(Stage 或者 Index)中。暂存区是提交之前的一个临时区域。

$ git add README.md
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#
(use "git rm --cached <file>..." to unstage)
#
#
new file:
README.md
#

README.md 文件加入暂存区后,git status命令的显示结果 发 生 了 变 化。 可 以 看 到,README.md 文 件 显 示 在 Changes to be committed 中了。

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

git commit命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录,我们就可以在工作树中复原文件,记述一行提交信息.我们来实际运行一下 git commit命令。

$ git commit -m "First commit"
[master (root-commit) 9f129ba] First commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md

-m 参数后的 "First commit"称作提交信息,是对这个提交的概述。记述详细提交信息
刚才我只简洁地记述了一行提交信息,如果想要记述得更加详细,请不加 - m,直接执行 g i t c o m m i t命令。执行后编辑器就会启动,并显示如下结果。
#
#
#
#
#
Please enter the commit message for your changes. Lines starting
with '#' will be ignored, and an empty message aborts the commit.
On branch master
Initial commit
#
# Changes to be committed:
#
(use "git rm --cached <file>..." to unstage)
#
#
new file:
README.md
#

在编辑器中记述提交信息的格式如下。
● 第一行:用一行文字简述提交的更改内容
● 第二行:空行
● 第三行以后:记述更改的原因和详细内容
只要按照上面的格式输入,今后便可以通过确认日志的命令或工具看到这些记录。

在以 #(井号)标为注释的 Changes to be committed(要提交的更改)栏中,可以查看本次提交中包含的文件。将提交信息按格式记述完毕后,请保存并关闭编辑器,以 #(井号)标为注释的行不必删除。随后,刚才记述的提交信息就会被提交。

中止提交

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

查看提交后的状态

执行完 git commit命令后再来查看当前状态。

$ git status
# On branch master
nothing to commit, working directory clean

当前工作树处于刚刚完成提交的最新状态,所以结果显示没有更改。

git log——查看提交日志

g i t l o g命令可以查看以往仓库中提交的日志。包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎样的差别。关于合并我会在后面解说。我们先来看看刚才的 git commit命令是否被记录了。

$ git log
commit 9f129bae19b2c82fb4e98cde5890e52a6c546922
Author: hirocaster <[email protected]>
Date:
Sun May 5 16:06:49 2013 +0900
First commit

显示了刚刚的提交操作。commit 栏旁边显示的“9f129b…”是指向这个提交的哈希值。Git 的其他命令中,在指向提交时会用到这个哈希值。Author 栏中显示我们给 Git 设置的用户名和邮箱地址。Date 栏中显示提交执行的日期和时间。再往下就是该提交的提交信息。只显示提交信息的第一行.如果只想让程序显示第一行简述信息,可以在 git log命令后加上 --pretty=short。这样一来开发人员就能够更轻松地把握多个提交。

$ git log --pretty=short
commit 9f129bae19b2c82fb4e98cde5890e52a6c546922
Author: hirocaster <[email protected]>
First commit

只显示指定目录、文件的日志

只要在 git log命令后加上目录名,便会只显示该目录下的日志。如果加的是文件名,就会只显示与该文件相关的日志。
$ git log README.md

显示文件的改动

如果想查看提交所带来的改动,可以加上 - p参数,文件的前后差别就会显示在提交信息之后。

$ git log -p

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

$ git log -p README.md

如上所述,g i t l o g命令可以利用多种参数帮助开发者把握以往提交的内容。不必勉强自己一次记下全部参数,每当有想查看的日志就积极去查,慢慢就能得心应手了。

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

git diff命令可以查看工作树、暂存区、最新提交之间的差别。单从字面上可能很难理解,各位不妨跟着笔者的解说亲手试一试。我们在刚刚提交的 README.md 中写点东西。

# Git教程

这里用 Markdown 语法写下了一行题目。查看工作树和暂存区的差别,执行 git diff命令,查看当前工作树与暂存区的差别。
$ git diff
diff --git a/README.md b/README.md
index e69de29..cb5dc9f 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+# Git教程

由于我尚未用 git add命令向暂存区添加任何东西,所以程序只会显示工作树与最新提交状态之间的差别。这里解释一下显示的内容。“+”号标出的是新添加的行,被删除的行则用“-”号标出。我们可以看到,这次只添加了一行。
用 git add命令将 README.md 文件加入暂存区。
$ git add README.md

查看工作树和最新提交的差别,如果现在执行 git diff命令,由于工作树和暂存区的状态并无差别,结果什么都不会显示。要查看与最新提交的差别,请执行以下
命令。
$ git diff HEAD
diff --git a/README.md b/README.md
index e69de29..cb5dc9f 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1 @@
+# Git教程

不妨养成这样一个好习惯:在执行 git commit命令之前先执行git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交。这里的 HEAD 是指向当前分支中最新一次提交的指针。
由于我们刚刚确认过两个提交之间的差别,所以直接运行 g i t commit命令。

$ git commit -m "Add index"
[master fd0cbf0] Add index
1 file changed, 1 insertion(+)

保险起见,我们查看一下提交日志,确认提交是否成功。

$ git log
commit fd0cbf0d4a25f747230694d95cac1be72d33441d
Author: hirocaster <[email protected]>
Date:
Sun May 5 16:10:15 2013 +0900
Add index
commit 9f129bae19b2c82fb4e98cde5890e52a6c546922
Author: hirocaster <[email protected]>
Date:
Sun May 5 16:06:49 2013 +0900
First commit
成功查到了第二个提交。

本文参考:《Github 入门与实践》

先写到这里吧,好累,尽量再接下的日子里写完这部博客,完成我的学习任务。加油!

----2018年7月22号凌晨一点二十二完
----范儿

猜你喜欢

转载自blog.csdn.net/qq_40420322/article/details/83859290