【计算机基础】github使用 & git命令

一、github基本使用

这一小节主要介绍github的基本使用方法以及每一步的流程和作用。

1. 创建仓库

请添加图片描述

2. 创建分支

请添加图片描述
此时有两个分支:main 和 readme-edits。 现在,它们看起来完全相同。 接下来,将向新分支添加更改。

3. 创建和提交更改

在上一步中创建新分支时, GitHub 会将您带到作为 main 副本的新 readme-edits 分支的代码页。

您可以对存储库中的文件进行更改并保存更改。 在 GitHub 上,保存的更改称为提交。 每个提交都有一个关联的提交消息,该消息是解释为什么进行特定更改的说明。 提交消息会捕获您更改的历史记录,以便其他参与者可以了解您执行了哪些操作及其原因。
请添加图片描述

4. 打开拉取请求

现在,您在 main 以外的分支中进行了更改,可以打开拉取请求。

拉取请求是 GitHub 上协作的核心。 打开拉取请求后,可以提出更改,要求某人审查和提取您的贡献并将其合并到其分支中。 拉取请求显示两个分支中内容的差异。 变化、增减以不同的颜色显示。

只要进行提交,便可打开拉取请求并开始讨论,即使在代码完成之前亦可。

通过在拉取请求消息中使用 GitHub 的 @提及功能,您可以向特定人员或团队请求反馈,无论他们近在大厅还是远在 10 个时区之外。

您甚至可以在自己的存储库中打开拉取请求并自行合并。 这是在处理大型项目之前了解 GitHub 流程的好方法。

请添加图片描述
您的协作者现在可以查看您的编辑内容并提出建议。

5. 合并拉取请求

在最后一步中,您将 readme-edits 分支合并到 main 分支中。 合并拉取请求后,readme-edits 分支上的更改将合并到 main。

有时,拉取请求可能会引入与 main 上现有代码冲突的代码更改。 如果存在任何冲突, GitHub 将提醒您有关冲突代码的信息,并防止合并,直到冲突解决为止。 您可以进行解决冲突的提交,也可以使用拉取请求中的注释与团队成员讨论冲突。

在本演练中,应该没有任何冲突,因此您已准备好将分支合并到主分支中。

请添加图片描述

二、通过git命令使用github

在github上创建好仓库后进行以下操作:

1.把需要上传的文件夹变成git可管理的文件,在需要上传的文件夹路径下输入以下:

git init

2.将本地文件添加到暂存区

git add .

3.将暂存区文件提交到分支(master):

git commit -m'对修改过的代码的描述'

4.为将要上传的版本打一个tag,方便后来下载不同版本的代码:

git tag tag名称
# 这里的tag名称最好是分支名称和版本号的组合

4.添加你要上传到的远程仓库:

git remote add origin 仓库地址
# 仓库地址为:git@github.com:xxx/xxx.git

5.切换分支 (可选,如果不切换分支的话就默认上传到main/master分支上)

git cheekout -b 分支名字
# 如果是存在的分支,想要切换的话直接git checkout 分支名字即可
# 如果是不存在的分支,则git checkout -b 分支名字就可以创建新分支并切换到新分支上

6.将本地本版本号的文件上传到远端仓库的指定分支:

git push origin 分支名字 tag名称

此时,如果报错
请添加图片描述
就说明你的SSH key没有添加到github帐号设置中,这时需要在本地创建SSH key,然后将生成的SSH key文件内容添加到github帐号上去。

创建SSH key的方法很简单,生成ssh key的过程如下所示:

ssh-keygen -t rsa -C "your_email"

然后系统提示输入文件保存位置等信息,连续敲三次回车即可,生成的SSH key文件保存在中~/.ssh/id_rsa.pub文件中。

在linux下可以用cat命令显示id_rsa.pub中的内容:

cat  ~/.ssh/id_rsa.pub

接着拷贝.ssh/id_rsa.pub文件内的所有内容,将它粘帖到github帐号管理中的添加SSH key界面中。
请添加图片描述
请添加图片描述

在团队协作使用git的过程中,一般会禁用直接提交master分支的权限。正常操作应该是,在新建分支上进行处理,然后提交一个request,请求合并,也就是常说的PR(Pull Request)。

上传新的版本后就可以进行版本的管理等操作,比如上一小节介绍的拉取请求、解决冲突、合并拉取请求等操作。

查看历史版本的操作如下:
在这里插入图片描述
然后就可以看到历史版本,每一个版本分别做了什么样的修改,所以在git commit -m "修改内容部分"要好好填写修改的内容:
在这里插入图片描述

三、从GitHub上指定分支clone代码

如果是从master/main分支clone代码,则:

git clone 仓库地址
# 仓库地址为:git@github.com:xxx/xxx.git

如果想从指定分支clone代码,则

git clone -b 分支名称/tag名称 (--depth=1) 仓库地址
# 仓库地址为:git@github.com:xxx/xxx.git
# depth 表示克隆深度, 1 表示只克隆最新的版本. 因为如果项目迭代的版本很多, 克隆会很慢

如果想下载历史版本(历史版本没有历史版本号),就可以先git clone,然后从commits找到对应版本的SHA并复制SHA,然后cd到刚下载的代码目录,git checkout SHA,当前目录的代码就变成了该版本。也可以直接通过历史版本进行下载。

当给一个版本打上版本号后,如果这个版本被merge到了master分支,可以通过版本号下载这个版本。

四、本地分支和远程分支之间的一些操作

Git的分支实际上是一个指向某个版本的指针,对分支的增删改操作就相当于对指针的增删改,因此十分快速轻量。

本地分支就是本地Git仓库里的一个指针,指向某个提交。

远程分支是远程仓库里的一个指针,指向远程仓库中的某个提交。

4.1 常用操作

新建一个本地分支feature1。即在当前版本上新建一个分支,也就是新增一个指向当前版本的指针:

git branch feature1

切换到feature1分支。改变HEAD的指向至对应的分支;HEAD是git中一个特殊的指针,它永远指向本地的当前活跃分支,因此在本地切换分支就相当于改变HEAD的指向:

git checkout feature1

新建并切换到分支feature1,操作1和2可以合并成一个步骤:

git checkout -b feature1

还可以将feature1推送到远程:

git push origin feature1

这样远程就会新增一个名为feature1的分支,并且本地的feature1会自动跟踪远程的feature1。
如果不想让远程的分支也命名为feature1:

git push origin feature1:feature1_o

这个命令意为将本地的feature1分支,推送到远程,在远程的分支名为feature1_o,并跟踪之

可以发现上个命令其实是git push origin feature1:feature1的简化

合并分支。在feature1上做了一些修改提交后,还可以将提交merge到主分支:

git checkout master  // 先将当前分支切换为master
git merge feature1 // 再将feature1合并进当前分支

合并feature1上的提交后,如果想将这些提交同步到远程的master,则可以执行 git push origin master将本地合并的提交推送到远程。

在feature1分支合并后,还可以再删除分支feature1:

git branch -d feature1

如果未执行合并便删除分支,git会提示错误error:分支’feature1’ 没有完全合并,如确定要删除,可使用-D强制删除:

git branch -D feature1

同样也可以删除远程分支:

git push origin :feature1_o

这里其实运用了个小技巧,将本地的“空”推送到远程的feature1_o分支,也就是删除了远程feature1_o分支。
也可以使用以下这个命令来删除:

git push origin --delete 分支名称

4.2 git修改远程仓库地址

1、直接修改远程仓库地址

查看远程仓库地址

git remote -v

修改远程仓库地址:

git remote set-url origin [url]

2、先删除再修改地址

git remote rm origin
git remote add origin [url]
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值