# Day30--Push?Pull?跟GitHub好好沟通沟通

Yo!这应该就是我的最後一篇的铁人文啦!撒花

其实Git真的很多东西可以说,一下子要讲一些细节的操作真的很花篇幅,但偏偏铁人只有30天,其实要说操作Git这件事情,我个人认为其实在实作的过程真的要用Git做事情,除了本地端用Git自己纪录自己的东西,其他的就是Git跟GitHub的连结了。

Well,其实自己之前也用过GitHub上传过资料,但我那个时候不知道Git,所以我就直接把档案拖曳进去GitHub上,真的超虾!

都要干工程师了,总要用一些工程师Skill吧!

那我们就开始罗!

GitHub开个新专案

专案名称输入一下:

然後就给它create repository点下去

这个时候就会看到这些详细的资料,好啦就是说明一些Git的指令:

那这边主要会有两种途径说明:

  1. 全新专案
  2. 现有专案

如果是要做一个全新专案,那就采用上面的:

create a new repository on the command line

如果要上传新的专案,那就采用下面的

push an existing repository from the command line

好啦,话不多说,来先开个东西:

先创个目录,然後把一个叫做README的档案加进去:

然後一样

git add READ.ed
git commit -m "first commit"

完成之後,我们接下来要设定推上GitHub服务器的设定了!

需要取用远端节点的一些资料:
[email protected]:terminal201467/practice-git.git

设定好了远端节点之後,就来推东西上去吧!

git push -u origin master

等等怎麽推不上去?

try agin:

嗯?看来问题是出在public key,来去看看。

SSH途径创建金钥

关於public key是什麽呢?这边简单的讲一下:其实我们Push在Git里面做过的纪录,其中一个过程就是确认git跟GitHub的连接要透过什麽辨认....我的理解是这样。

所以我们挑选用SSH来作为远端的辨认的时候,势必要设定一组Key,来作为我们Push的关键。

上面那个错误我们其实就是着重於:

[email protected]:Permission denied (publickey).

所以这个时候,就要去创建个key了:

ssh-keygen -t rsa

然後就会出现下面这个画面,然後就给它按下y,这个时候key就创完了。

然後下面两个指令也要做一下,把新的ssh-key加进去git里面

ssh-add
ssh-agent

但最後这个指令一定要输入,才会产生丢在git上面的金钥。

cat ~/.ssh/id_rsa.pub

上面这个指令输完了之後,我们就去GitHub设定SSH金钥吧:

  1. 点击Settings

  1. SSH and GPG keys

  2. 新增一个金钥,然後把刚刚下面这个指令产生的一大堆乱码贴过去,然後title稍微设一下就可以了

cat ~/.ssh/id_rsa.pub

(下面是完成图)

然後我们再push一次吧!

git push -u origin master

呜呜,好感动,终於把东西push上去GitHub了。

Push完之後,还是要Pull吧?

如果说Push就是把自己在git上的纪录传上去,那麽Pull就是把GitHub上的东西拉下来,这个应该很直白。

所以....这个时候要来介绍一个指令:

git fetch

简单的说,这个指令就是会把GitHub的东西拉下来

那我来试试。

嗯?Nothing happend。

啊,因为GitHub上面的东西跟我现在Git的东西是一样的齁,所以我要在GitHub上做一些改动。

下面我会新增一个README

然後再试一次:

git fetch

哦!?可以看到上面有一个小小的提示,也就是

master->origin/master

这个可以解读成,它就是一个从master分出去的分支这样,
然後进度还比它新,but它并不是一个正式的branch。

这个时候如果要让Git的进度跟上从GitHub上fetch下来的东西,我们就用一个熟悉的陌生人:

git merge origin/master

如果我们知道Fetch到底在干些什麽,Pull应该就算更简单的一件事情了,首先来改一下刚刚的README:

然後:

git pull

这个时候,就会是fetch+merge的结果了,顺吧?

然後,其实也有另外一种pull的方式,叫做:

git pull --rebase

这个其实就是fetch下来之後,用rebase的方式去处理,让整个commit纪录不用再多出一个,详情可以去看merge以及rebase的差别。

总之,Push、Pull大概就是这样的两个概念,如果这篇文章有帮助到在学Git的大家,应该就值得了XD

完赛小记

嗯,写到现在大概知道一些Swift与Git的基本技巧与概念,希望可以在实作中更熟习,有时候碰到自己不熟悉的状况时,还是要上网找或是翻书,这些都会在开发中让你更有系统地去判断现在问题的来源!

总之,铁人赛算是挑战成功啦XD
下台一鞠躬(撒花

之後应该还会在Medium上努力写文啦,之後也会思考自己的blog经营的面向会往什麽方向,许多基本的知识前辈们其实都已经写了很多文章了,或许我可以做的是翻译?

如果有兴趣可以来我的blog逛逛?

https://cute-seagreen-weasel-735.medium.com

我是MJ,咱们下次铁人赛 or Medium再见。

tags: 铁人赛

<<:  [Day30] 完赛结语

>>:  Day 30 - Final

D12 使用者个人文件页

首页完成後 让使用者可以进入使用者个人文件页 列出属於此使用者的文件 我已经先用测试网页塞了测试资料...

Day 01:前言 - 打开地图,开始我们的旅程吧!

自我介绍 大家好,我是你们这30天的向导,我叫Andy Chiang,目前就读中兴大学资工系,大二升...

[day27] PostBack资料data处理 显示菜单

对PostBack Event中的字串进行处理,由於这个参数仅能放入字串,所以可以套用网页Query...

TypeScript | namespace 心得纪录

这边一样是在研究 D14 介面的函式超载运用,又提到 namespace 的知识点,所以回头来补相关...

Day30 完赛心得

很遗憾在第21天时没能来得及完成文章,虽然铁人赛中断了,後续还是努力完成30篇的篇幅,自己至少有在铁...