Git Bash⭐二、与仓库建立连接、提交与下拉项目

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Git Bash⭐二、与仓库建立连接、提交与下拉项目

📢 仓库的意义

首先我们来确定几个定义:

仓库:

  • 是一个保管我们项目的服务器,类似一台主机。但它不仅是一个存储位置,还是一个程序,我们可以对它进行一些设置。
  • 我们会将项目提交到仓库去,供别人下载。
  • 仓库不仅仅指的是github这一个仓库,还有gerrit等也是仓库。

Git Bash,只是一个工具,供我们上传项目、下载别人修改的东西等的工具。

SSH,是我们电脑的密钥,由Git Bash生成,是唯一的。作用是可将它配置到仓库去,这样仓库在接受到Git Bash上传等修改命令时,会先验证SSH,如果验证成功,就执行修改操作。避免了谁都可以修改我们的仓库。

🟥 仓库设置

仓库以github举例,gerrit仓库的设置见:传送门

看完上面的定义,我们了解到了仓库是一个存代码的地方,我们需要给它配置SSH,供我们的Git Bash使用。

如果大家用过SVN,应该也知道首先需要将项目检出,生成.svn文件。仓库也需要这样做。.svn存的是我们不断对这个项目修改的备份和一些修改记录,仓库一样。

不同的是SVN是先在服务器建立好文件夹,再根据服务器上的网址检出文件。这儿的仓库是先在本地初始化好本地仓库(后缀名.git),再推送到服务器仓库

1️⃣ 初始化本地仓库

进入到你想建立本地仓库的文件夹,它可以是空的,也可以有东西,直接建就好。

git init

我的电脑有点问题,GitBash会报[0x7FFD0C31E0A4]...这一行,猜测是监控软件导致:传送门1传送门2,问了一下IT,果然了...

这不重要,继续往下做就好。

现在你本地文件夹中已有了.git隐藏文件夹

2️⃣ 新建远程仓库

github链接:传送门

打开github右上角,点击new repository

  • 说一下仓库的私有和公有
    本来也是个开源社区,很多大佬们都把自己的东西开源了,也就是放在共有仓库里,可以让人查阅。也鼓励大家使用共有仓库 (๑•́ ₃•̀๑)。
    以前使用私有仓库是付费, 或者你可以申请学生认证获得私有仓库的使用权。但是现在2020年3月份的时候我收到github的邮件,邮件里边说现在已经开放私有仓库的使用了。
  • 说一下学生认证
    以前github的教育认证可以让学生和教育者免费使用私有仓库,并且还有许多其他的优惠政策。比如github的一些付费功能,教育认证之后会有巨大的折扣。戳我查看如何进行学生认证╰(●’◡’●)╮

3️⃣ 配置SSH Key

通过该博客,得到SSH Key:传送门

github右上角头像-Settings:

 

好的,现在你就完成了仓库SSH的配置了。

4️⃣ 本地仓库关联到远程仓库

Q:为什么要关联呢?我们不是有SSH了么?

  • SSH是仓库用来验证的,本地的Git Bash现在还不知道把项目往哪推送呢~
  • 连接的作用还有:我们也可以通过Git Bash将项目连接到多个仓库去,进行提交。(比如github访问太慢,同时放到码云之类仓库)git bash 连接多个远程仓库

🚩 得到SSH链接地址

注意:我们上面配置的是SSH Key,不是链接

🚩 将本地仓库关联到github仓库

1、Git Bash cd到你的本地仓库

2、本地仓库关联到github仓库

git remote add + 名字 + SSH链接地址

名字:

这一步不仅是关联到github仓库,并且也给本地仓库起了个名字。

这儿用的是origin,这个名字是你给本地仓库起的名字。origin也是Git推荐的命名称呼。当然我们也可以改成别的。

这个名字的作用是:可以通过这个名字,取消链接远程服务器;将这个名字的本地仓库,推送到服务器上去。。。

添加之后没有任何提示,那如何确定你关联成功了?

  • 你可以再输一遍,这时候他会提示你刚才已经设置过了。

  • 或者这样:
git remote -v

结果显示我已经添加了叫origin的仓库。一个push(推送),一个fetch(拉取)。

 

🚩 如何取消关联仓库?

如果你以后不想连接这个远程仓库了,只需要输入下方代码即可:

git remote remove + 名字

比如我刚才添加的远程仓库代称是origin,那我就要写:git remote remove origin

🟨 文件上传

文件上传分为五个步骤(黑色步骤可省略):查看修改的文件-->添加要上传的文件 --> 查看缓存区文件-->添加本次提交的备注 --> 推送上传

1️⃣ 查看修改的文件

git status

2️⃣ 添加要上传的文件

  • git add +文件名.文件类型  //将某个文件加到缓存区
  • git add +文件名.文件类型 ... 文件名.文件类型  //将n个文件添加到缓存区
  • git add xx文件夹/*.html  //将xx文件夹下的所有的html文件添加到缓存区。
  • git add *hhh    //将以hhh结尾的文件的所有修改添加到暂存区
  • git add Hello*  //将所有以Hello开头的文件的修改添加到暂存区
  • git add -u     //提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
  • git add .      //提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
  • git add -A    //提交所有变化。git add前几条都可以记不住,这个必须记住!!!

我在本地仓库新建一个文件叫readme.md,现在将它添加到缓存区。

3️⃣ 查看缓存区的文件

git status

4️⃣ 添加本次更新备注

git commit命令将索引的当前内容与日志消息、用户对本次更新的备注一起存储在新的提交中,等待最后的上传。

git commit -m "你的修改备注"

5️⃣ 推送上传

第一次推送上传:

向一个空的远程仓库中推文件:

git push -u 本地仓库名称 远程分支名称
  • 仓库名称:刚才我添加连接的时候,给仓库起名叫origin
  • 分支:你现在github上是个空项目,并没有分支。所以你现在不只完成了推送到分支,而是先在github上新建了分支,再往那个分支上推送的。
  • 分支:既然我们github上没有分支,所以我们就起名master(主分支的意思)。以后合作项目的时候,成员之间建了不同的分支,你就可以往你自己的分支上推。

 

以后的推送上传:

我们第一次推送master分支时,加上 –u参数才会把本地的master分支和远程的master分支关联起来,

只有第一次推的时候需要加上-u,以后的推送只输入:

git push 本地仓库的名称 远程仓库的分支

强制推送上传:

如果你某次推送失败,git bash报错,你懒得处理错误,你就可以用这个。

但是有风险,因为报错90%是因为你本地仓库和远程仓库数据发生冲突,使用这个会直接用本地数据覆盖掉远程数据,可能损失数据哦。

git push 本地仓库名称 远程分支名称 -f

🟩 查看与修改提交内容

1️⃣ 查看自己的操作记录

git log

2️⃣ 修改上次提交的注释

git commit --amend -m "修改后的注释"
//记得强制推送上传

 为什么该处是强制推送上传,而不是普通上传?

因为我们修改的是上次更新中的注释,而不是上传本次更新。

就像我们已经上传了两个文件,现在我们要修改成上次只上传了一个文件,那远程仓库又没失忆,怎么不会给你报错?

你要是又上传一版新的更新还好,远程仓库知道你又修改了,但你现在是想让远程仓库认为你上次提交的就是现在这个样子。。所以要强制更新。

 

哈哈哈   你看  强制更新后它还以为新的注释是1小时前更新的呢,其实是我刚才做的~

🟦 文件下拉

上边push报错,我自己知道数据差在哪里,所以使用了强制推送。

但是在团队合作中,push报错,那铁定是你队友修改了远程仓库,如果你再强制上传,那你就是毁了你队友的代码。所以需要在你修改之前,自己的文件跟远程仓库保持一致。

不要怕,下拉只会更新别人的东西,不会更改属于你的东西(前提是你要确定别人没修改你的东西并提交到服务器),你这次修改之后的内容不会被之前的版本覆盖。

git pull 本地仓库名称

尝试一下:

1️⃣ 修改github上的内容

比如我现在跑到我的远程仓库修改了readme内容:

这时候我已经修改成功了。

2️⃣ 下拉到本地

git pull完成之后打开本地的readme,发现hello world已经进来了嗷。

 

3️⃣ 查看修改

git log看一下,commit的记录也显示了。

🟪 文件克隆

下拉仓库学会了,那克隆呢?克隆就是你本地上没有,你直接把远程仓库的东西搞下来。

方法有三种:

  • 如果你只想看看源码,那你可以直接选download zip,下载源码压缩包。
  • 如果你使用的是git desktop,那你就选open in desktop
  • 如果你想学Git Bash克隆你就继续看,很简单的就一句。

1️⃣ 下载压缩包

Download Zip。

2️⃣ Git Bash克隆

🚩 克隆方法1

分为两种情况:仓库是你的,不是你的。

若是你的,就用SSH下载。不是你的,应HTTPS下载(因为你没SSH权限)。

定义要下载到的文件夹,下载:

当前Git Bash在哪个文件夹,文件就会下载到哪个文件夹下。

git clone 加上你刚才的地址

🚩 克隆方法2

在一个空文件夹进行如下操作:

git init
git remote add origin +(git地址)
git fetch origin +想克隆的分支名

检测本地仓库是否连接到远程仓库

还记得git remote -v吗?用它看一下你下下来的本地仓库连接上那个远程仓库没。

已经连接了嗷。放心使用吧。

🟫 特殊情况:一些下拉报错

🚩 git suboptimal pack - out of memory

当我们clone项目时,可能会报上面的错。

我们应该将下拉代码改为:

git clone http://xxx.git --depth 1


相关文章
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何将个人账号下的Git仓库转移到企业账号下
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
IDE 网络安全 开发工具
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
|
20天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
40 2
|
2月前
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
165 1
git学习三:git使用:删除仓库,删除仓库内文件
|
2月前
|
开发工具 git 索引
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
80 4
|
2月前
|
自然语言处理 前端开发 数据可视化
Quarto ppt模板制作与Rstudio git连接
本文介绍了当前PPT演示中流行的Quarto文档使用情况,以及如何在Rstudio中连接Git进行版本控制。重点讲解了Quarto的ppt模板制作流程,包括安装、创建演示文稿及自定义样式等步骤,并提供了相关资源链接。
39 0
Quarto ppt模板制作与Rstudio git连接
|
2月前
|
存储 开发工具 git
Git 远程仓库地址管理:添加、修改和验证
Git 远程仓库地址管理:添加、修改和验证
75 4
|
2月前
|
编译器 开发工具 数据安全/隐私保护
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
本文提供了一个关于如何在Gitee上进行多人协作和版本控制的详细教程,包括新建和初始化仓库、克隆仓库、邀请好友共同管理仓库以及注意事项,旨在帮助用户顺利进行代码协作开发。
259 0
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
|
3月前
|
开发工具 git
IDEA更改远程git仓库地址
【9月更文挑战第27天】本文介绍了两种在IntelliJ IDEA中更改远程Git仓库地址的方法:一是通过图形界面,在VCS设置中直接修改;二是通过IDEA内置的命令行工具使用`git`命令进行更改。具体步骤包括从版本控制菜单进入项目设置、修改远程仓库URL,以及使用`git remote set-url`命令更新仓库地址,并验证修改结果。这些方法适用于项目迁移或更换仓库地址的情况。
619 6
|
3月前
|
Linux 开发工具 git
linux自建仓库git之钩子不生效
linux自建仓库git之钩子不生效