Git/Github操作手册

news2025/1/12 12:03:40

Git 是目前最流行的版本管理工具,也是程序员的必备技能之一。

这里主要介绍一下git/github远程仓库的使用及相关配置:

一、SSH Keys

SSH Keys是什么呢?简单来说相当于一把钥匙(在机器中即电脑中进行配置),github相当于一把锁,每次发起请求是会去验证钥匙与锁是否配对。

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置。

二、添加远程库

你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。那如何将我们这个本地仓库上传到 GitHub 呢?下图简单描述了Git常用的操作流程。

1.在本地新建文件夹,命名为blog,在本地的blog仓库的路径下运行命令行。

$ git init    // 在当前目录新建一个Git代码库

这个操作在当前目录下生成一个.git文件,默认不显示,可在命令行中输入 ls -a,即可看到所有被隐藏文件,接下来进行如下操作:

$ echo "# myblog" >> README.md   //在当前目录下新建README.md,且文件内容为'myblog';如果目录下已经有文件,请省略这一步
$ git add README.md                //将README.md文件提交到问题暂存区
$ git commit -m "first commit"     //将暂存区文件提交到本地仓库,且本次提交记录为'first commit'
$ git status -sb      //显示当前所有文件的状态

这几步操作目的是将上传的文件提交到本地仓库,接下来就是介绍怎么样将本地仓库上传到远端库了。

2.登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库,名称随意,一般可以跟本地目录名一致。

在Repository name填入blog,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库。

3.点击创建按钮之后,GitHub 就会把后续的操作全告诉你,如图:

4.看上图,记得点击 SSH 按钮,如果不点击这个按钮,你就会使用默认的 HTTPS 地址。但是千万不要使用HTTPS 地址,因为使用HTTPS 除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但在某些只开放http端口的公司内部就无法使用SSH协议而只能用HTTPS 。

5.目前,在GitHub上的这个blog仓库还是空的,GitHub告诉我们,可以在这个仓库创建一个新的本地仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

现在,我们根据GitHub的提示,在本地的blog仓库下运行命令:

$ git remote add origin git@github.com:miqilin21/blog.git

6.下一步,就可以把本地库的所有内容推送到远程库上:

$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 216 bytes | 216.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To Build software better, together:miqilin21/blog.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。

推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:

7.如果你想查看变更历史,可以通过命令:

$ git log 

8.从现在起,只要本地仓库作了修改,如果你想让改动保存到远程仓库里,你需要先 git add 文件 或者也可以 git add .
注意,如果这个 文件以前被我们 add 过,所以此处的 git add 操作可以省略,但我建议你使用 git 的初期阶段,不要省略 git add。
换句话说,每一次改动,都要经过 git add 和 git commit 两个命令,才能被添加到 .git 本地仓库里。接下来就通过命令:

$ git push   //将本地仓库修改内容同步到远程仓库

但是,如果远程库先有修改的话,要想本地仓库与其同步,还需通过命令:

$ git pull      //将远程库修改的内容下载到本地库

最后把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!

三、从远程库clone

上面已经讲了

  • 在本地创建仓库
  • 将本地仓库上传到 GitHub

这里将介绍另外一种用法,那就是直接在 GitHub 创建一个仓库,然后克隆下载到本地。

1.在GitHub 上新建一个仓库 git-demo,这次就不创建空仓库了,而是自带 README 和 Lisence 的仓库,创建截图如下:

请按图中所示,一模一样的操作,然后点击创建按钮。

2.这样一来,这个仓库就会自动生成三个文件:

3.现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库,点击页面中唯一的绿色按钮「clone or download」,会看到一个弹出层:

请确保弹出层里的地址是 SSH 地址,也就是 git@github.com 开头的地址,如果不是,就点击 Use SSH 按钮,然后复制这个地址。

4.打开 Git Bash,找一个安全目录,比如 ~/Desktop 桌面目录就很安全:cd ~/Desktop,然后运行:

$ git clone git@github.com:miqilin21/git-demo.git
Cloning into 'git-demo'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (5/5), done.

运行完了你就会发现,桌面上多出一个 git-demo-2 目录,里面的内容和远程库一模一样,至此从远程库克隆到本地就完成啦!

四、小结

三种方式都说完了,它们分别是:

  1. 在本地创建仓库
  2. 将本地仓库上传到 GitHub
  3. GitHub 上的仓库克隆下载到本地

其实呢,还有很多种不同的方式,但是,你记住这几种就行了,已经够你用了。我们并不想要了解 git 的所有高级用法,我们的目的很明确:能通过 Git 命令使用 GitHub 就行。

我们再回顾一遍已经学到的命令:

  1. git clone git@github.com:xxxx,克隆下载远程仓库
  2. git init,初始化本地仓库 .git
  3. git status -sb,显示当前所有文件的状态
  4. git add 文件路径,用来将变动加到暂存区
  5. git commit -m "信息",用来正式提交变动,并备注信息,提交至 .git 仓库
  6. 如果有新的变动,我们只需要依次执行 git add xxx 和 git commit -m 'xxx' 两个命令即可。
  7. git log 查看变更历史

五、其他学习资源

  • 常用 Git 命令清单
  • Git 菜鸟教程
  • 创建版本库

本人Github链接如下,欢迎各位Star

https://github.com/hbqjzx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/471566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java数据结构】——第九节.向上建堆和向下建堆的区别

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java初阶数据结构 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目…

算法训练 | Day41动态规划

343. 整数拆分 思路: 确定dp数组(dp table)以及下标的含义:dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。 确定递推公式:dp[i] max(dp[i], max((i - j) * j, dp[i - j] * j)) 可以想 dp[i]最…

TimesNet

Key Points 1D变2D 这是本文的核心。大部分现有方法都是作用于时间序列的时间维度,捕获时序依赖性。实际上,现实时间序列一般都有多种模式,比如不同的周期,各种趋势,这些模式混杂在一起。如果直接对原始序列的时间维…

SpringTask任务调度工具的使用

1. Spring Task 1.1 介绍 Spring Task 是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 **定位:**定时任务框架 **作用:**定时自动执行某段Java代码 应用场景: 1). 信用卡每月还款提醒 **强调&…

网络机顶盒哪个好?发烧友实测2023网络机顶盒排名

不懂网络机顶盒哪个好的新手们在选购时大部分会参考排行榜,某知名权威数码网站公布了2023年最新网络机顶盒排名,结果是否公正呢?我自费购入了排名前五的网络机顶盒,进行了十多天的深入测评,今天就来详细聊聊我的真实体…

最近部门新的00后真是卷王,工作没1年,入职18K

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们公司来了个00后,工作都没1年,到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 …

2.2 逻辑代数中的三种基本运算

学习建议: 理解运算符的含义:首先,我们需要理解每个逻辑运算符的含义。例如,“与”运算符表示两个输入信号同时为真时输出为真,而“或”运算符表示两个输入信号中至少一个为真时输出为真。 练习运算符的应用&#xff…

使用openssl生成https证书

首先去官网下载openssl工具:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions (slproweb.com) 然后安装完成需要执行(1)openssl genrsa -des3 -out root.key 1024 (2)openssl req -new -key ro…

Java面试题总结 | Java面试题总结7- 计算机网络模块(持续更新)

计算机网络 文章目录 计算机网络get和post的区别TCP和UDPTCP和UDP的应用层协议TCP是如何保证可靠传输的视频聊天用的是TCP还是UDP,为什么可靠的UDP协议UDT(UDP-based Data Transfer Protocol)KCPQUIC Cookie和Session的区别Cookie的优缺点cookie的优点:c…

连ChatGPT都不懂的五一调休,到底怎么来的?

今天是周几? 你上了几天班了? 还要上几天班放假? 五一啥安排? 出行的票抢到了吗? 调休到底是谁发明的?! 五一劳动节是要劳动吗? 为什么昨天是周一,今天还是周一&a…

跨域融合风口下,又一外资巨头Tier 1+本土供应商“组团”来袭

头部企业正在加速“融合”。 汽车智能化升级对产品创新与多元化需求下,来自技术升级、降本、开发周期缩短等等一系列因素影响,中外供应商们都在积极思变和寻求破局。 随着全球智能汽车产业步入域集中和域融合的新阶段,过去的以硬件&#xf…

找不到vcruntime140_1.dll无法执行的问题解决方案

随着技术的不断进步,人们越来越依赖电脑来处理日常工作。时常在安装或运行一些软件的时候,我们可能会碰到一些提示信息,其中的“找不到vcruntime140_1.dll无法执行”就是很常见的一种。今天我们就来探讨一下这个问题的原因和解决方案。 一.vc…

第八章 C#脚本(上)

脚本是使用 Unity 开发的所有应用程序中必不可少的组成部分。大多数应用程序都需要脚本来响应玩家的输入并安排游戏过程中应发生的事件。游戏对象的行为由附加的组件控制。虽然Unity内置了许多组件,但是我们仍然可以使用脚本来创建自定义组件。Unity支持C#编程脚本语…

用友T3提示,年度[UFDATA_002_2017]并不存在,导致无法备份迁移。

用友T3提示,年度[UFDATA_002_2017]并不存在,导致无法备份迁移。 现在都win11,迁移T3到新电脑,遇到了问题,某个年度账套不存在怎么办? 打开数据管理工具。无法导出。 002代表账套编号,2017代表…

【Zookeeper】 面试题总结

Zookeeper 1、工作中 Zookeeper 有什么用途吗2、zookeeper 数据模型是什么样的3、那你知道 znode 有几种类型呢4、你知道 znode 节点里面存储什么吗5、每个节点数据最大不能超过多少呢6、你知道 znode 节点上监听机制嘛7、那你讲下 Zookeeper 特性吧8、你刚提到顺序一致性&…

计算机网络-基础编程实验(JAVA\Python3)

计算机网络-网络基础编程实验(JAVA\Python3) 一.实验目的 通过本实验,学习采用Socket(套接字)设计简单的网络数据收发程序,理解应用数据包是如何通过传输层进行传送的。 二.实验内容 学习套接字编程,完成以下的网络数…

海尔牵头IEEE P2786国际标准通过Sponsor投票并连任工作组主席

01 海尔牵头IEEE P2786国际标准 通过Sponsor投票 并连任工作组主席 海尔牵头制定的全球首个服装物联网国际标准IEEE P2786《Standard for General Requirements and Interoperability for Internet of Clothing》通过Sponsor投票,标志着该国际标准草案得到了行业…

ThingsBoard教程(三六):规则节点解析 检查关系节点 check relation,实体类型节点 entity type

前言 本篇文章和大家一起来学习两个节点,检查关系节点 check relation和实体类型节点 entity type。 check relation 检查消息的发起者与其他实体之间是否存在关系。如果选择了“check relation to specific entity(检查与特定实体的关系)”,则必须指定相关实体。否则,…

程序员的4个真相(看了有点想乱搞)

最近在知乎看到一个很有意思的问题,热度还挺高的。 “程序员的通病是什么?” 很多人第一印象就是: - 加班 - 脱发 - 单身直男 - 亚历山大 - 需求魔幻 其实这些标签在其他行业领域也普遍存在,也并不是程序员真正的悲哀。 真正的…

3 程序流程控制-函数、包、常用函数【Go语言教程】

3 程序流程控制-函数、包【Go语言教程】 一、 程序流程控制 顺序控制分支控制switch分支for循环 Go 语言没有 while 和 do…while 语法,这一点需要同学们注意一下,如果我们需要使用类似其它语言(比如 java / c 的 while 和 do…while ),可以…