玩转GitHub

简介: 玩转GitHub

玩转GitHub


Git基础

下载Git

Git官网下载对应操作系统的Git。

安装完成后,还需要最后一步去设置自己的名字以及邮箱地址,在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

使用Git

创建新仓库

从终端(cmd)进入你想要记录内容更改的文件夹里

例如我们进入gittest文件夹

输入:

git init

这个文件夹以后的更改就会被记录了。(如果是空文件夹会提示Initialized empty Git repository in /home/yep/code/gittest/.git/,告诉你文件夹为空)

检出仓库

执行如下命令以创建一个本地仓库的克隆版本:

git clone /path/to/repository

如果是远端服务器上的仓库,你的命令会是这个样子:

git clone username@host:/path/to/repository

工作流

网络异常,图片无法展示
|

添加和提交

你可以提出更改(把它们添加到暂存区),使用如下命令:

git add <filename>
git add *
git add .

这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:

git commit -m "代码提交信息"

现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

推送改动

你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:

git push origin master

可以把 master 换成你想要推送的任何分支。

如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:

git remote add origin <server>

如此你就能够将你的改动推送到所添加的服务器上去了。

分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

网络异常,图片无法展示
|

创建一个叫做“feature_x”的分支,并切换过去:

git checkout -b feature_x

切换回主分支:

git checkout master

再把新建的分支删掉:

git branch -d feature_x

除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的

git push origin <branch>

更新与合并

要更新你的本地仓库至最新改动,执行:

git pull

以在你的工作目录中 获取(fetch)  并 合并(merge)  远端的改动。

要合并其他分支到你的当前分支(例如 master),执行:

git merge <branch>

在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts) 。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts) 。改完之后,你需要执行如下命令以将它们标记为合并成功:

git add <filename>

在合并改动之前,你可以使用如下命令预览差异:

git diff <source_branch> <target_branch>

标签

为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 1.0.0 的标签:

git tag 1.0.0 1b2e1d63ff

1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID:

git log

你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。

log

如果你想了解本地仓库的历史记录,最简单的命令就是使用:

git log

你可以添加一些参数来修改他的输出,从而得到自己想要的结果。 只看某一个人的提交记录:

git log --author=bob

一个压缩后的每一条提交记录只占一行的输出:

git log --pretty=oneline

或者你想通过 ASCII 艺术的树形结构来展示所有的分支, 每个分支都标示了他的名字和标签:

git log --graph --oneline --decorate --all

看看哪些文件改变了:

git log --name-status

这些只是你可以使用的参数中很小的一部分。更多的信息,参考:

git log --help

替换本地改动

假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:

git checkout -- <filename>

此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。

假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:

git fetch origin
git reset --hard origin/master

版本回退

  • 首先我们可能不记得做了哪些修改,我们需要查看下历史记录,执行语句 git log
    网络异常,图片无法展示
    |
    这里我们也可以看出git commit -m 后面跟的说明多么重要,写的越详细,你越清楚。还要注意的就是每个记录里的长长的数字,这个是版本号。
  • 回退版本需要 git reset --hard HEAD^ 命令,如果想回到上一个版本可以用HEAD^,上上版本即HEAD^^,依次类推。这里我们回到上一个版本试下。
    网络异常,图片无法展示
    |

    再点开first.txt文件可以看到内容已经变成版本2的内容了。
  • 看似我们已经完成了需求,但其实,我们有可能还会出现,回退到以前版本使用了一段时间后,发现还是原来的版本更好,但用上面的指令已经无法回退到原来的版本。这里就需要借助上面提到的版本号。使用命令 git reset --hard 版本号
    网络异常,图片无法展示
    |

    此时再查看文件,已经变为版本3的内容了

Github远程仓库

准备工作

  • 申请Github账号 直接去github.com注册。
  • 基础Git语法知识
  • 本地安装好Git bash运行环境

建立远程仓库

登录Github账号后点击右上角加号建立自己的仓库,名称自拟。

此处以test为例。

网络异常,图片无法展示
|

配置 SSH 秘钥

创建SSH密钥

在Git bash中执行命令:

ssh-keygen -t rsa -C "abc@163.com"   #此处填自己注册GitHub的邮箱

没有特殊需求的话可以不设置密码,两次回车继续。

~/vvd_git$ ssh-keygen -t rsa -C "zywvvd@mail.ustc.edu.cn"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zywvvd/.ssh/id_rsa): 
Created directory '/home/zywvvd/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/zywvvd/.ssh/id_rsa.
Your public key has been saved in /home/zywvvd/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:klt1J9JxcGBj7xgB5dC1cXsQmK9ioOhInLRgqKppO8k zywvvd@mail.ustc.edu.cn
The key's randomart image is:
+---[RSA 2048]----+
|      o+p+=o+.   |
|       B.Bo+ o   |
|      = *.+ . .  |
|.    o = *.  .   |
|oo  . . u..      |
|* +   . .        |
|+*.. . .         |
|*E  .  .   .     |
|Ooo              |
+----[SHA256]-----+
复制代码

得到类似上述输出即为创建成功。得到的文件放在~/.ssh文件夹中。

添加SSH Key

  • 登陆github
  • 在settings中设置 'SSH and GPG keys'
  • 添加new SSH key—— 设置名字并将.ssh 文件夹中isa.pub公钥文件的内容复制进去
  1. 创建一个SSH Key。到主目录下(本机为 C:\Users\ZJ-luoke)查看有无 .ssh 目录,若有,直接跳到下一步。若无,则打开Git Bash,执行命令 ssh-keyGen -t rsa -C "youremail@example.com" 去生成SSH Key。注意上面的邮箱要填自己的。然后一路回车,操作结束之后,就会出现 .ssh 目录。
  2. 如果没有操作错误,.ssh 目录会有两个文件如下:
    网络异常,图片无法展示
    |

    这两个就是SSH Key的秘钥对,id_rsa 是私钥,不能泄露出去,而 id_rsa.pub 就是公钥。
  3. 登录GitHub,按下图顺序点击
    网络异常,图片无法展示
    |
    网络异常,图片无法展示
    |
    网络异常,图片无法展示
    |

在title上填写钥匙名,再复制 id_rsa.pub 文件的内容,粘贴到下面的key框里。最后点击Add SSH key,大功告成。

测试SSH秘钥

执行命令:

ssh -T git@github.com

输出结果:

Warning: Permanently added the RSA host key for IP address '52.74.223.139' to the list of known hosts.
Hi zywvvd! You've successfully authenticated, but GitHub does not provide shell access.

出现欢迎字段说明SSH密钥配置成功。

测试

同步本地库到远程库上

在已有的本地仓库中使用remote命令链接仓库:

git remote add origin https://github.com/zywvvd/test.git

编辑本地库内容,推送到远程端:

echo "#example" >> README.md
git add README.md
git commit -m "README.md created"
git push -u origin master

此时可以在github端看到更新上传的说明文件。

克隆仓库

执行如下命令以创建一个本地仓库的克隆版本:

git clone /path/to/repository

如果是远端服务器上的仓库,你的命令会是这个样子:

git clone username@host:/path/to/repository

Fork

Fork别人的项目或者多人合作项目,最好每人都拥有一个独立分支,然后由项目维护人合并。如何建立自己的分支?

# 分支的创建和合并
# git branch yourbranch 
# git checkout yourbranch    切换到yourbranch
# 开发yourbranch分支,然后开发之后与master分支合并
# git checkout master
# git merge yourbranch
# git branch -d yourbranch    合并完后删除本地分支

如何将牛人的远程分支更新到自己的本地分支?

# 查看当前项目下远程
# git remote
# 增加新的分支链接,例如
git remote add niuren giturl…
# 获取牛人的远程更新
git fetch niuren
# 将牛人的远程更新合并到本地分支
git merge niuren/master


相关文章
|
4月前
|
程序员 Android开发
如何有效使用 GitHub
使用 GitHub 的频度很高,但是否有效利用了这个好东西?
51 16
|
网络安全 开发工具 git
GitHub
一、建立个人仓库 二、配置SSH密钥 三、克隆仓库代码 四、推送代码到个人仓库 五、代码拉取
411 1
|
传感器 Java C语言
Github使用
Github使用
|
开发工具 git 开发者
GitHub简单了解
GitHub简单了解
112 0
|
Docker 容器
Github
Github
350 0
Github
|
开发工具 git
GitHub的使用小记
GitHub的使用小记
104 0
|
存储 测试技术 Linux
github 介绍
github 介绍
|
Ubuntu 网络安全 开发工具
3_Github使用
3_Github使用
181 0
3_Github使用
|
设计模式 Java Linux
你真的会使用github吗?
你真的会使用github吗?
283 0
你真的会使用github吗?
|
开发工具 git C++