前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git笔记——基本功能(下)

Git笔记——基本功能(下)

作者头像
量潮科技
发布2022-10-31 15:58:31
3660
发布2022-10-31 15:58:31
举报
文章被收录于专栏:量潮科技量潮科技

大家好,DDL是大学生的第一生产力,所以很快就赶出这第二篇教程出来啦。

本篇文章会重点放在GitHub上,说git操作GitHub的一些基本操作。

本篇文章的部分内容参考了Git链接到自己的Github(1)简单的开始 - plinx - 博客园,这是一篇不错的blog,介绍了git操作GitHub的一些常见问题。

下面我们开始正文

目录

准备工作

推送文件及常见问题

GitHub 界面一些按钮及操作

准备工作

先给大家看看GitHub的界面

首先登陆GitHub的网站,注册一个GitHub账号,GitHub的账号是电子邮箱和密码,这个邮箱是GitHub用来给你发通知的重要邮箱,不要随便设置。

然后我们返回git,记得你之前设置了一个本机的邮箱和用户名吗?现在你需要让本地库与GitHub建立连接,如何让GitHub知道这个是你发的呢?这就是SSH密钥的作用了,好的,我们输入以下命令:

ssh-keygen -t rsa -C "youremail@example.com"

(请注意这个邮箱是你的本机邮箱)

这是在生成一个RSA的SSH密钥,之后它会先让你确定产生的id_rsa(请注意文件名,这个文件名要是不对就删掉重来吧,以前我掉进坑过)的密钥地址,好的,然后会让你输入密码,这个密码如果不是军事用途,商业机密什么的就忽略掉。讲白了,直接enter下来就好

但是!如果这不是你第一次设置密钥,你可能会与之前的密钥地址和文件名冲突,这个时候需要自己设置好存放的地址。

这里给大家看一下产生的两个文件

(以前已经设置过一个密钥了,所以这次我修改了存放地址)

id_rsa那个是密钥,不要泄露出去,id_rsa.pub是公钥(public),可以暴露,同样的,GitHub只需要知道你的公钥就可以确定你是谁了。所以下一步我们回到GitHub。

点击右上角你的头像——Settings——SSH and GPG keys进入界面,点击右上角的New SSH key按钮

自己设立title,然后key里面把原来的公钥用notepad++打开,直接复制粘贴到Key框里面就好。

添加好了,我们来测试一下SSH链接。

ssh -T git@github.com

被成功识别之后,你就可以开始操作了。

推送文件

首先,我们在GitHub账户上创建一个新的空仓库,以我自己的账户为例,设置名字为demo

由于我们现在演示的是把东西推送上去,所以最后那个设置README的选项不要管它。直接到这里就创建仓库就好。

然后进入这个界面

下一步要做的事情就已经很明显了,输入命令

git remote add origin git@github.com:*

git push -u origin master

我们解释一下:

● 第一行命令是要添加一个远程库,*后面是这个仓库的地址,对照好GitHub界面左上方仓库的地址,然后不要忘了后面的.git扩展名,remote 遥远的,origin一般表示远程库。

● 第二行命令是将master分支上的东西都推送到这个远程库上。-u参数表示第一次需要先建立本地版本库与GitHub远程库的连接,第二次之后就不需要这个参数了。

那我们来演示一下

(提交的过程会有点慢,等待就好)

(origin是刚才做了添加之后产生的文件,无视就好)

那么提交之后,再回头去看看GitHub,发生了什么呢?

这就完成了提交。

提示:远程库的状况如果你不清楚的话,只需要输入命令:

git remote -v

就可以展现远程库的详细信息。

提示:如果你想推送到下一个库,那么之前的库要记得删,命令是

git remote remove origin

注意:分清楚工作区,暂存区和你的branch分支上的文件(已经提交的),你这次的push只是把已经commit到branch分支上的文件提交了上去,工作区内没有被add,commit的文件是不会被提交的,如果觉得不太放心,时刻注意查看一下工作区的status

注意:很多时候我们需要把一个库里面的文件夹一起推上去,git add有一种参数方法是可以把所有的文件一起推送上去的,这里不介绍这个命令的原因是如果碰上文件夹,这种方法会把文件夹识别为文件,会产生意想不到的情况。所以我建议大家一个一个的add,然后检查完了再进行push。

当然,事情往往总不是那么plain sailing(一帆风顺)……

因为之前我们已经做了很多的注意和提示,所以诸如连接不上,找不到仓库(not find a repository)这些的我们都当你们会成功的躲过……

但是,有可能会发生rejected(拒绝)的错误,别忘了刚才我们是推送给一个空仓库,如果里面有东西呢怎么办?

有的代码是不允许你覆盖的,这种情况下我们推荐的解决方案是先把它原本的东西抓取下来,使用的命令是

git pull

这个时候会牵涉到分支的合并的问题,具体的说的话不太好理解,其实只要理解为:远程库的版本比你现在的分支的版本要新,你应该怎么样做分支的合并?

这个时候,我们进入.git文件夹(别忘了上一节提到的那个初始化工作区后生成的一个隐藏文件夹),打开config,修改里面的一些东西为如下内容:

[branch "master"]

remote = origin

merge = refs/heads/master

之后就可以正常爬取并且传送上去了。

这种情况产生的原因是冲突,这在多个分支的工作的时候经常会出现,不过如果你一直都是一个master分支,那倒是问题不大。

好的,最后来说一说clone

git clone git@github.com:*

*的东西是远程版本库的地址,我们举个例子,现在打开一个很强的GitHub网站

我要把它clone下来放到我的GitHub的demo工作区

这就代表了任务的完成,回去看看demo里,哎,真有这玩意。

提示:我自己在研究的时候发现传输的速率总是很慢很慢(几个KB/s),但是现在我们看这个就发现完全不一样,这个原因是因为我自己打开的校园网的VPN,如果你也是学生的话,这个方法不妨一试,挂个服务器代理,连一下VPN,都可以大大提高传输的速率。

好的,有人要提问了,到现在为止,我都没有发现怎么删除文件,事实上这需要好好的理解一下git add和commit文件的具体表示。

我们这里提供了一个演示

我之前手工的创建了一个文件demo2.txt,现在我把它手动删除了,然后

看到图里的deleted了没?再看看下面的git add demo2.txt,是不是有点懵逼?

注意!这里提交的并不是demo2.txt的文件,而是对应的它的修改命令!也就是说,你把这个东西commit并且push掉之后,GitHub执行的就是删除命令了。demo2.txt就在GitHub上被删了。

当然,如果你想完全通过命令行来简单粗暴的解决,也可以使用git rm命令,具体的原理与git add相似,这里我们就不展开了。

下面,来看一个稍微复杂的问题

写一份教程的同时自己也要保证图的多样性,例子的准确性,就刚刚我看到了我的git上显示了这些东西

原来我在刚才做了删除操作之后发现那个句子好像很不错,我就后悔了,做了一次reflog,于是,现在我的本地仓库版本已经比远程库落后了,这个时候,我尝试着去push新的东西上去,也就失败了

解决方案:

1. 把目前你的东西复制一份移出工作区

2. it pull,然后把你的东西移进来,手动解决冲突。

3. git push

这样就可以了。

这个问题挺常见的,希望大家可以多看看这篇文章,积累经验。

GitHub 界面一些按钮及操作

学了以上的命令,已经足够你玩转你自己的GitHub了,但是这并不是我们逃避GitHub的理由,因此我们这里依然对GitHub的界面做一些简单的介绍,希望大家学完后可以轻松玩转GitHub~~

我们还是一样,看图说话

登陆GitHub网站,我这边会显示这样的画面

可以看出分为好几块,我们一个一个来说

● 上方导航区,一般常用的是search,pull requests和issues。

● 左上方的导言,这是给你去探索着玩的,有兴趣的可以去看看

● 右上方的表示你在这些仓库里贡献过,也就是提交过文件

● 右下角表示仓库,注意三个图标,前三个代表是自己的仓库,第四个代表这是个私人仓库,经过owner分享才能看到,最后三个是fork下来的(fork的概念之后说)

● 点击右上方的头像,点击your profile就进入了下一张图

这里就要说这么几个概念了

fork

我们看到REMDME下面有一行提示文字是forked from...,这代表这个仓库是从别的地方拷过来的,这种情况多半出现在需要摘用别的代码并且进行修改的时候,在项目协作开发的时候会经常用上。

与之相对应的就是

pull request

点进去fork的仓库,我们来看一下这张图

我们继续一点一点来看

● 首先右上角的三个按钮是标记这个仓库被fork,star,watch的次数的,当然你也可以点击那个fork的按钮,完成fork操作

● 略微向下有一个code栏,pull requests之后说,projects这一栏主要是用来标记目前的项目开发的一些进度的,这个有点像notes的意思。另外想介绍一下settings,这可以对仓库做一些处理,比如删除……不说了,我脸现在还很疼。

● 再往下看到31 commits那一栏,这一栏我们拉出来说

1. commits

这是记录提交的每一步的,这和git reflog展现出来的内容相似,点每一次提交记录就能看到每一步的提交状态。

2. branch

这标记了提交的不同分支,在项目开发中,有可能有一方面的内容是由多个人来做的,这个时候多个人对应多个分支,这一方面内容有点复杂,这里略去不说。

3. Release

这个牵涉到了版本tag标记的概念,大概意思就是说,我每一次的成稿都给它一个tag,标记版本号,也就是项目开发的开发版本相关内容,这一块内容由于组内开发不复杂,这里略去不说。感兴趣的可以参考廖雪峰老师的教程。

4. contributors

这就表示由多少人参与了协作。

● 再下方最左有个branch:master,master都知道是主分支,如果你用多个分支提交过文件,就会有不一样的内容

● 稍微往右看,看到了一个New pull request,这就是fork对应的功能,你fork完,修改完之后认为对了,就可以提交一个pull request,界面会给你提供修改的痕迹,提交成功后,由这个仓库的owner进行评定,如果成功,你的pull request就会成功的被应用到他的项目开发中,也就是给开源做了贡献啦。

● 再往右看有个create new file和upload files等等,咱们略去不说,因为太简单了,clone or download中,download是可以下载的,不过是手工下载,clone就不用说了,你已经学过git了。

● 再往下有一条提示信息:

This branch is 26 commits behind the xmucpp:master.

这个代表你fork的对应的原organization(组织,orga)已经很新了,在这之后有26条提交记录,后面就开始提示你要不要做pull request,但是compare的话只会compare这个仓库的变化,所以有可能你点进去依然看不到任何信息。

最后,给大家展示一下项目组的organization

被邀请进入项目GitHub的人自然就可以在组内创建仓库进行工作了,而owner资格拿到之后,就可以删除仓库,整理仓库了。

好了,可视化界面的介绍就到这里。

写在后面

git操作GitHub和GitHub本身可视化界面,每个人倾向不同。但是git学好之后,对于理解GitHub上的一些界面按钮很有好处,而且用git操作会显得比较的程序猿,所以说,找到二者的结合点,是玩转它的关键~

~好的,本系列教程结束,撒花~

~欢迎支持着点赞~

~笔芯~

文/刘理

排版/芷若

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量潮科技 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档