通过Git克隆和推送GitHub代码教程

在上一篇教程中我们已经配置好Ubuntu20.04环境,并且将Git和自己的GitHub账号建立了链接配置,详情请看上一篇教程:

https://blog.csdn.net/weixin_41011452/article/details/133803139

本篇分享如何利用Git推拉Github上的代码。

1.克隆别人在github上的开源代码

以PX4开源飞控固件为例,打开PX4的github主页,可以看到PX4有很多仓库,常见的PX4固件和用户指导手册已经置顶,方便我们寻找,我们要克隆的是PX4的固件,所以是下图中箭头所指的那个。

点进PX4_Autopilot后,可以看到有branch(分支)和Tag(版本标签),branch是当前最新版本下的分支,我们如果想下载历史版本,需要点击Tag切换到历史版本,如我想下载V1.13.3版本,点击Code→Local→SSH,复制当前版本的git地址,如下图所示。

然后回到ubuntu界面下,输入克隆命令如下:

git clone -b v1.13.3 git@github.com:PX4/PX4-Autopilot.git

但是存在一个问题,会出现网络慢下载出现各种错误,因为这个指令的-b是表示切换分支,切换到v1.13.3,所以会到那个分支下去搜索并下载,卡在55%进度十几分钟,不得已crtrl+c中断下载,再次下载的时候显示文件夹已经存在,通过ls -l 查询下载的PX4_Autopilot里的内容,什么都没有是空的,如下图所示:

所以改用三个指令完成,第一个指令:

git clone git@github.com:PX4/PX4-Autopilot.git

界面如下图所示,几分钟就下载完成。

第二个指令是cd进入刚刚下载好的PX4-Autopilot,并且通过ls -l发现此文件夹下已经有很多内容了,说明克隆成功了,然后通过git checkout v1.13.3切换到v1.13.3版本分支下

第三个指令就是下载V1.13.3分支下与最新版本不同的地方,但是在执行的过程中还是会出现failed和error字样,多次执行这个命指令即可,直到输入这个指令后什么也没有为止

git submodule update --init --recursive

然后查看当前下载的版本是不是我们想要的v1.13.3,输入git describe --tag查询版本号

git describe --tag

这就是克隆代码的全部步骤。

2.将本地代码推送到github上

首先要在github上建立一个远程仓库,点击左上角的三个横杠,然后点击新建仓库

仓库名字随便起,描述部分可以写上仓库的简要说明,然后点击create repository,如下图所示:

下一步回到ubuntu,进入本地想推送的代码目录下,通过ls -a 可以看到当前目录下的所有文件,包括隐藏文件,此时没有.git文件

在终端中输入如下指令初始化本地仓库生成.git文件,可以看到.git已经生成,表示本地git初始化完成:

git init

下一步是将本地仓库和github上的远程仓库连接起来,首先执行下述代码进行配置,Test 是你的github仓库别名(默认是为origin,这个其实可以随便改的),XXXX1992就是你的github的名字,aliyun_PX4为githubb上的的仓库名字,连接后用git status可以看到当前的分支在master上。

git remote add aliyun git@github.com:XXXX1992/aliyun_PX4.git

这个地方存在一个坑,如果不用http传输,就不要去设置token令牌,我测试发现token令牌设置了http传输也存在问题,所以要用ssh方式传输,怎么区分ssh和http的仓库地址,看下图,进入你的github仓库,点code→SSH,复制这个连接,最明显的区分方法就是你点http的时候复制的那个连接地址是以http为开头的,ssh开头的是以git开始的,这点真的是大坑,困扰了我好久。

然后关联本地仓库和github远程仓库,执行下述代码,其中Test是上一步建立的本地仓库名称,,也是远程仓库的别名,XXXX1992是你的github名字,aliyun_PX4是你的github远程仓库的名字。

git remote set-url Test git@github.com:XXXX1992/aliyun_PX4.git

然后使用如下指令可以查看本地仓库和远程仓库的关联

git remote -v

我之前提交过了,这次再本地文件夹内新增了一个123.txt文件,然后使用git add 123.txt将当前目录下的所有文件加入到暂存区中,

git add 123.txt

暂存区中的修改提交到本地仓库,并添加提交信息,“PX4新增123.txt提交”,这个你随便写,是你对本次提交的说明。

git commit -m "PX4新增123.txt提交"

从下图可以看到已经检测到chang了,有两个chang是因为我把之前的在本地的一个测试文件删除了,我没有把这个push提交上去,所以会检测出来,这次随着123.txt的新增会一起改变,这样推送上的代码就是把我之前的那个ubinavi文件删除,把123.txt文件新增到github的aliyun_PX4仓库中

push之前看一下我的github上的aliyun_PX4仓库,是存在ubinavi的,我在本地已经删除这个文件了,如果这次push那么这个文件再gihub上也会被删除。

然后最后一步就是推送代码了,输入以下指令,Test就是我后来又给远程仓库起的别名,master就是分支

git push -u Test master

下图的意思就是说我们已经提交成功了,我们通过本地仓库Test,把我们的123.txt这个文件推送到远程的github上master分支了,同时把ubinavi在github仓库删除了

去看github的aliyun_PX4仓库,发现ubinavi那个文件确实不见了,123.txt被添加上去了,至此所有工作完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值