【Git】(基础篇四)—— GitHub使用

GitHub使用

经过上一篇的文章,相信大家已经对git的基本操作熟悉了,但哪些使用git的方法只是在本地仓库进行,本文介绍如何使用git和远程仓库进行连接使用。

Github和Gitee

主要用到的两个远程仓库在线平台是github和gitee

GitHub

GitHub 是全球最大的代码托管平台之一,由 GitHub Inc. 运营,后来被微软收购。它不仅是一个代码仓库,还是一个社交编程网站,用户可以关注其他开发者、创建组织和团队、管理项目等。GitHub 提供了免费的公共仓库和付费的私有仓库选项,以及一系列的开发工具和集成服务。

Gitee(码云)

Gitee 是中国的代码托管平台,类似于 GitHub,但它针对中国用户进行了优化,提供了更快的数据传输速度和更好的中文支持。Gitee 同样支持公共和私有仓库,提供项目管理、代码审查、持续集成等功能。由于其在中国的服务器位置,Gitee 在国内访问速度通常比 GitHub 快。

使用Gitee对于中国人更加友好,但如果你英语过关的话,可以尝试去github上面看看,github上面的项目更多,尤其是一些涉及前沿技术的项目。下面的示例我也将使用github进行展示,在熟练使用github之后,gitee的使用就会非常简单了。

Github基本概念

在github中打开一个项目之后,其中会包含一些菜单选项

Repository:仓库的意思,即你的项目,你想在 GitHub 上开源一个项目,那就必须要新建一个 Repository,如果你开源的项目多了,你就拥有了多个 Repositories 。

Issue:问题的意思,举个例子,就是你开源了一个项目,别人发现你的项目中有bug,或者哪些地方做的不够好,他就可以给你提个 Issue ,即问题,提的问题多了,也就是 Issues ,然后你看到了这些问题就可以去逐个修复,修复ok了就可以一个个的 Close 掉。

Star:这个好理解,就是给项目点赞,但是在 GitHub 上的点赞远比微博、知乎点赞难的多,如果你有一个项目获得100个star都算很不容易了!

**Fork:**这个不好翻译,如果实在要翻译我把他翻译成分叉,什么意思呢?你开源了一个项目,别人想在你这个项目的基础上做些改进,然后应用到自己的项目中,这个时候他就可以 Fork 你的项目,这个时候他的 GitHub 主页上就多了一个项目,只不过这个项目是基于你的项目基础(本质上是在原有项目的基础上新建了一个分支,分支的概念后面会在讲解Git的时候说到),他就可以随心所欲的去改进,但是丝毫不会影响原有项目的代码与结构。

Pull Request :发起请求,这个其实是基于 Fork 的,还是上面那个例子,如果别人在你基础上做了改进,后

来觉得改进的很不错,应该要把这些改进让更多的人收益,于是就想把自己的改进合并到原有项目里,这个时候他就可以发起一个 Pull Request(简称PR) ,原有项目创建人就可以收到这个请求,这个时候他会仔细review你的代码,并且测试觉得OK了,就会接受你的PR,这个时候你做的改进原有项目就会拥有了。

Watch:这个也好理解就是观察,如果你 Watch 了某个项目,那么以后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。

Gist:有些时候你没有项目可以开源,只是单纯的想分享一些代码片段,那这个时候 Gist 就派上用场了!

创建github项目

在github整个界面的右上角的加号,选择【create new repository】创建一个新的github仓库,以下是一些创建仓库时的选项。

创建好之后你的仓库图如下:

虽然其中只有一个自动生成的README文件,但是它已经是一个完整的仓库了,可以正常使用包括clone等命令。

README文件可以理解为是这个项目的说明书,这个文件中的内容应该包括如何部署和调整运行整个项目,该文件使用markdown语法进行编写,和写博客一样,在正式的项目中,README文件非常重要,应该精心书写。

向github提交项目

SSH

为了防止随意提交造成的混乱,提交代码之前一定是需要某种授权的,而 GitHub 上一般都是基于 SSH 授权的。SSH是一种网络协议,用于计算机之间的加密登录。目前是每一台 Linux 电脑的标准配置。在安装了git之后,Windows系统也有SSH服务,而大多数 Git 服务器都会选择使用 SSH 公钥来进行授权,所以想要在 GitHub 提交代码的第一步就是要先添加 SSH key 配置。

SSHkey

在安装完git后应该会自动安装好SSH服务,可以在git bash(命令行)中输入ssh查看,如果没有显示下面的内容可以自己安装一下ssh服务。

输入命令ssh-keygen -t rsa指定rsa算法生成密钥,然后连续三个回车(不要进行输入),在Windows系统目录/c/用户/用户名/.ssh(隐藏文件)下面就会看到两个文件id_rsa 和id_rsa.pub ,而 id_rsa 是密钥,id_rsa.pub 就是公钥。

github上面添加ssh key

在github中,点击右上角头像的settings,在设置中选择【SSH and GPG keys】,选择【New SSH Key】添加一个新的SSH Key

然后把id_sra.pub(记事本打开)公钥中的内容给粘贴进去即可

在这一步可以不设置ssh的Title,github会根据公钥中的内容自动识别用户名并将其作为Title

在设置完ssh之后,使用ssh -T [email protected] 命令测试是否配置成功

PUSH & PULL

push直译过来就是「推」的意思,如果你本地代码有更新了,那么就需要把本地代码推到远程仓库,这样本地仓库跟远程仓库就可以保持同步了。

【示例】把本地代码推到远程仓库mian分支

bash 复制代码
git push origin mian

pull直译过来就是「拉」的意思,如果别人提交代码到远程仓库,这个时候你需要把远程仓库的最新代码拉下来,然后保证两端代码的同步。

【示例】把远程仓库mian分支中的代码拉到本地

bash 复制代码
git pull origin mian

一般我们在push之前都会先pull ,这样不容易冲突。

克隆和提交代码

添加 SSH key 成功之后,就可以实现克隆项目和代码的提交

克隆项目

我们之前在github上面创建了一个test项目,现在让我们用clone命令将其克隆到本地,让我们再创建一个空文件,不需要init(初始化),直接使用clone命令git clone https://github.com/dao-ca-ren/test.git

打开repository右上角的code就可以找到对应的仓库地址

克隆之后,原本的空文件夹就变成了一个git仓库,其中有我们远程仓库中的内容,此时的这个本地仓库就和远程仓库绑定好了,修改完本地的内容后进行commit之后,就可以直接使用push将修改内容推到远程仓库中。

绑定远程仓库

如果我们本地已经建立好一个仓库,上面的方法就不适合使用了,此时需要将本地仓库和远程仓库建立关联之后在进行push才行。

复制代码
git remote add origin https://github.com/dao-ca-ren/test.git

在本地仓库中,运行上述命令绑定远程仓库,其地址为https://github.com/dao-ca-ren/test.git,origin为给远程仓库起的名字,因为一个复杂的项目可能会有多个远程仓库,这时候就需要我们使用名字进行区分。

查看当前项目有哪些远程仓库:

复制代码
git remote -v

上述的fetch和push是两种不同的操作,后续为你详细介绍

现在我们再来看一遍push操作,其中的命令含义我们就都懂了

复制代码
git push origin mian

把当前本地目录的改动,推到origin远程仓库的mian分支

fetch

在Git中,fetch 命令用于从远程仓库下载数据并将其合并到本地仓库中,但不会自动合并这些更改。它将远程分支的快照复制到你的本地仓库中,作为远程跟踪分支。这样你可以在之后选择性的将这些更改合并到你的工作分支中。

基本用法

1. Fetch所有远程仓库的更改
复制代码
git fetch
2. Fetch特定远程仓库的所有更改
复制代码
git fetch <remote_name>

其中 <remote_name> 是你想要从其获取更新的远程仓库的名称。例如,如果你的远程仓库名为 origin,则命令为:

复制代码
git fetch origin
3. Fetch特定远程仓库的特定分支
复制代码
git fetch <remote_name> <branch_name>

这会将远程分支的最新状态拉取到本地。例如,拉取 origin 远程仓库中的 main 分支:

复制代码
git fetch origin main

查看远程分支

使用 fetch 后,你可以查看远程分支的状态:

复制代码
git branch -r

合并远程分支到当前分支

如果你想将远程分支的更改合并到你的当前分支,可以使用以下命令:

复制代码
git merge <remote_name>/<branch_name>

例如,将 origin/main 合并到当前分支:

复制代码
git merge origin/main

注意事项

  • 在执行 fetch 命令之前,最好先确认你的工作目录是干净的,没有未提交的更改。
  • 如果你只是想同步远程仓库的最新状态而不立即合并更改,那么使用 fetch 而不是 pull 更为合适。
  • 使用 fetchmerge 可以让你更细粒度地控制合并流程,避免不必要的冲突。
  • fetch 不会改变你的工作树或当前 HEAD 的位置。

整个本地仓库加上远程仓库的命令和流程如下图所示

相关推荐
梓羽玩Python44 分钟前
月之暗面最新开源模型!Kimi-Audio:革新多模态音频处理,统一音频理解、生成与对话!
人工智能·python·github
YoungHong19921 小时前
Git Bisect 使用指南:高效定位引入 Bug 的提交
git·bug
HelloGitHub2 小时前
《HelloGitHub》第 109 期
开源·github
程序员差不多先生2 小时前
字节跳动在GitHub上有哪些开源项目
github
极小狐4 小时前
极狐GitLab 的压缩和合并是什么?
运维·git·ssh·gitlab·github
它说我会飞耶11 小时前
git 命令集
git
极小狐11 小时前
极狐GitLab 合并请求依赖如何解决?
运维·git·ssh·gitlab·github
八股文领域大手子15 小时前
如何给GitHub项目提PR(踩坑记录
大数据·elasticsearch·github
ikkkkkkkl15 小时前
Git基本操作
git
泯泷15 小时前
探索DeepWiki:开发者的代码知识库利器
github·openai·ai编程