当前位置: 首页 > article >正文

【Git】Liunx环境下Git的使用:“克隆,提交,推送“

 e1c7f8cdf80947678346a25f8e64e89a.png

 

目录

一、常用参数

二、我们为什么要使用Git?

三、创建远程仓库

第一步:创建对应代码托管平台账号。

第二步:在托管平台创建仓库

第三步:完善仓库内容(选择性使用)

开源和私有

四、克隆远程仓库到本地

安装git:

Git全局配置:

克隆仓库到本地:

五、远程仓库的维护(四步走)

git add

git commit

git push

过程分析:

整体流程总结

逻辑顺序


 

e1c7f8cdf80947678346a25f8e64e89a.png

一、常用参数

add

将文件内容添加到索引

init

创建一个空的Git存储库或重新初始化一个现有的存储库

rm

从工作树和索引中删除文件

clone

将存储库克隆到新目录中

commit

记录对存储库的更改

pull

从另一个存储库或本地分支获取并与之合并

push

更新远程引用以及关联的对象

status

显示工作树状态

88f6de99383449aab349ef6b52440e2a.png

二、我们为什么要使用Git?

Git由Linus Torvalds于2005年开发,最初是为了管理Linux内核的源代码。当时,Linus对当时的版本控制系统(如BitKeeper)的限制和许可协议不满意,因此决定自己开发一个新的系统。Git的设计理念是快、高效、可靠,同时能够支持分布式开发。

我们可以理解这样一个场景,你使用文本编辑器写了一份工作汇报给老板,由于是第一次写报告,所以老板给你指出了很多问题让你去修改,然后你就大改特改在原文件中操作了很多,再拿给老板看的时候仍然有许多问题,在听取老板意见后又如此反复几次,但是,直到有一次老板给你说"你这改的什么玩意,越改越不行,就要你第二版吧",然后这时你就傻眼了,因为你一直在原稿改的,前几版早就不知道去哪了,你也早忘了刚开始具体是什么内容了,这时候就会非常犯难,但是如果在每次修改之前你都备份原版并更改标注日期和版本号,到时候回退的时候就会十分方便,这就是简单的版本管理。例如程序的发型新版本出现了非常严重的Bug,如果不能短时间内修好就可以先进行回退到之前版本,调整好之后再重新上线。

如果你有修改代码之前先备份成一个压缩包的习惯,这就是简单的备份,但是个人操作十分不便,在公司中需要管理的文件会变得十分庞杂,这就需要Git来帮我们完成这些任务:版本回退、备份恢复、分支管理(不同的方案)、协作、记录历史操作,这些都是Git可以为我们提供的服务。

此外我们还面临着一个问题,我们如果把各类文件的各种版本都保存在自己电脑上首先是内存不够,而且玩意某一年某一天电脑坏了要重装系统,数据丢失又是一个问题,这是Git结合"云存储"就可以解决这一问题,代码托管平台例如我们所熟知的GitHub,Gitee等,他们允许将所有版本存储在他们提供的存储器中,然后当你需要的时候可以随时随地拉取下来,为多人协作提供了方便,即便你们身处不同地方也可以共同完善同一个工程。以上就是我们使用Git的原因。

e1c7f8cdf80947678346a25f8e64e89a.png

三、创建远程仓库

使用远程代码仓库

第一步:创建对应代码托管平台账号。

(这里以Gitee为例,因为Github需要涉及到网络加速相对门槛较高)Gitee - 基于 Git 的代码托管和研发协作平台

第二步:在托管平台创建仓库

找到右上角的加号,点开后选择"新建仓库"

f99677ce61794a93a2850c84d35ec7f2.png

第三步:完善仓库内容(选择性使用)

9f6393d1fa0d450faec986f86c82d2a5.png

仓库介绍可用于标注该仓库作用,作者等信息,

开源和私有

开源选项可以选择开源也可以选择私有,开源则意味着任何人都可以访问、查看和使用这些代码。在大多数情况下,开源仓库允许用户下载代码、提交修改(通常通过合并请求或拉取请求)、报告问题等。这样有利于项目的进步,可以更好地发现、解决一些问题,缺点就是损失了隐私性,私有仓库只允许特定的人员或者组织查看修改,相对来说私密性较高。

d3bfa2619485442691dbf02b2b839bee.png

这里我选择把仓库名称命名为“test_for_linuxgit”,各位可以根据需要自己命名,也可以是中文名,例如"代码练习"等。

e1c7f8cdf80947678346a25f8e64e89a.png

四、克隆远程仓库到本地

我们之前只是在托管平台创建了仓库,现在我们本地也需要一份同样的仓库,而且要让版本控制工具意识到这两个仓库是同一个,我们怎么做呢?就是直接克隆过来一个一模一样的就可以了!

安装git:

如果是初次使用git,那么你可能需要进行安装,安装有如下几种:

如果你是Ubuntu:

sudo apt update sudo apt install git

如果你是CentOS:

sudo yum install git

其他发行版本在网站有对应教程,这里不过多赘述。

Git全局配置:

完成安装后进行git全局配置:

8e202f52c227439095724563a7657225.png

具体操作如下:

分别在引号中替换成你的用户名和邮箱.

git config --global user.name "用户名"

git config --global user.email "123456email@xxx.com"

克隆仓库到本地:

然后进行克隆操作,第一种方法,打开刚才创建好的仓库,找到,选中HTTP,点击右侧的复制按钮复制该地址,

cf218681773543fb8815163377b0c0c5.png

然后在Linux中你想克隆该仓库的路径下使用以下指令,不要直接复制粘贴,先输入git clone ,clone就是"克隆"的英文,然后再在后面粘贴你刚才复制的HTTP地址,回车后你就可以输入“ll”观察到在该路径下创建了一个新的和你仓库同名的路径(这里由绿色框框标注出来)。

git clone https://gitee,com/userid/hubname.git

6347636e05014b31862238b7c4fce676.png

如果你在刚创建仓库的时候没有任何其他内容的勾选,进入到该路径后你可以看到是空空的,如果勾选了的话你会看到你勾选的文件,

9b54095de2d54f988425fcf33e240989.png

到此为止仓库的克隆操作就结束了。

e1c7f8cdf80947678346a25f8e64e89a.png

五、远程仓库的维护(四步走)

问:把代码放进代码仓库,拢共分几步?

答:3步!add、commit、push。

创建一个README.md文件,如果你已经有了也不要紧,先继续往下走,

touch README.md

7f59e9db34004afa91da37c82b22512f.png

如果你已经有了README.md,可以选择继续新一个test.txt文件,也可以选择使用Vim等编辑器打开README.md文件,在第一行新加一行信息用于观察后续的实验结果。

例如:

### 测试标题

git add

然后使用git add!!!注意add后面有一个点,不要丢失!!!

git add .

c11a617533d44a69b0318e81601c6d71.png

然后

git commit

git commit master -m "The first commit test"

会出现以下信息则说明成功了,引号里的内容一般为本次修改内容,最好不要乱写,例如111,123,等随便一对内容都是不好的,正确的描述每次更改的内容会使得以后再回顾内容或者查找问题变得容易,也使得项目结构更加清晰,时间线更明显。

5992532042154ac2a0e5c5c9c6cdf5f0.png

git push

推送,如果直接使用推送命令

git push .

会有一个报错,这个错误信息是 Git 在你尝试推送(push)当前分支时产生的,表示当前的 master 分支没有设置上游分支(upstream branch)。下面是对这个信息的解释和解决方法:

在 Git 中,上游分支是指远程仓库中与本地分支对应的分支。没有设置上游分支意味着 Git 不知道要将当前分支推送到远程的哪个分支。

使用一下命令可以解决报错:

git push --set-upstream origin master

git push . 和 git push 是两个不同的命令,它们在推送操作中有一些关键差异:

git push

  • 含义:git push 命令用于将当前分支的提交推送到与之关联的上游(upstream)分支,通常是远程仓库(例如 GitHub、GitLab 等)。
  • 用法:它依赖于配置的上游分支。如果当前分支有设置的上游分支,git push 将推送更改到那个分支。否则,你可能会看到类似“当前分支没有上游分支”的错误消息。
  • 示例:如果本地 master 分支设置了与远程仓库 origin/master 的关联,执行 git push 将把本地 master 分支的提交推送到远程的 master 分支。

git push .

  • 含义:git push . 命令中的点号 . 表示当前目录,也就是说,它会尝试将当前本地仓库的更改推送到指定的远程分支。
  • 用法:尽管执行这个命令试图推送更改,但它与 git push 的行为略有不同。git push . 会推送当前目录中的更改,但仍然需要知道目标(远程)分支在哪里。如果没有上游分支配置,通常会导致错误,告知用户不能推送。
  • 示例:执行 git push . 时,Git 会尝试将更改推送到与当前分支相对应的远程分支,但必须指定如何推送,即上游分支。

 

所以一般推送使用push后不加点。直接git push即可。

然后输入用户名密码来验证身份,注意输入密码时还是不会显示的,输入完成后直接回车就行。

14c46fc301ed488f9961d65e29ec14a4.png

 再回到托管平台打开仓库你就可以观察到提交记录和新增文件,

2a2457845794427ba1603817900e2859.png

 

如果你是加了新内容则可以看到以下现象:

6357bba036ef47b3b1a44f1b541667b2.png


过程分析:

在 Git 中,git commit、git add 和 git push 等命令用来管理代码的版本和与远程仓库的交互。它们各自的作用和逻辑顺序如下:

1. git add

  • 作用:将更改(文件的修改、添加或删除)添加到暂存区(staging area)。
  • 逻辑:当你对文件进行修改后,Git 不会自动把这些更改包含在下一个提交中。你需要使用 git add 命令明确指定哪些更改要包含。此命令只会对文件进行标记,并不会真正做持久性保存,也不会与版本历史记录联系。

2. git commit

  • 作用:将暂存区中的更改创建一个新的提交,保存到本地的版本历史中。
  • 逻辑:执行 git commit 时,Git 会把上一步中通过 git add 放入暂存区的所有更改记录成一个快照,并为这个快照生成一个唯一的哈希值。可以使用 -m 后跟消息为这个提交添加描述

3. git push

  • 作用:将本地版本历史(即你的本地所有提交)上传到远程仓库。
  • 逻辑:执行 git push 时,Git 会将你所有在本地 commit 的更改推送到与当前分支关联的远程分支。你可能需要先设置上游分支,否则 Git 不知道将更改推送到哪个远程分支。

整体流程总结

  1. 开发阶段你在代码中进行了更改(例如,修改了文件)。
  2. 暂存阶段使用 git add 将这些更改放入暂存区,准备好提交。这是将更改从工作目录复制到暂存区的过程。
  3. 提交阶段使用 git commit 来将暂存区的内容记录为一次新的提交,也就是将你的更改持久化到本地的版本历史。此时,所有修改和描述将记录在本地仓库中。
  4. 推送阶段使用 git push 将本地的提交推送到远程仓库,使得其他人能够看到和使用你所做的更改。

逻辑顺序

  1. 修改(工作目录)
  2. git add(暂存区)
  3. git commit -m "message"(本地仓库,成为一条提交记录)
  4. git push(远程仓库,分享你的更改)

这样一来,git add、git commit 和 git push 就是将代码更改从本地保存到远程的整个流程中的关键步骤。

8908cebdf7b8409ca6dfba7946447266.png感谢观看,如果内容对你有帮助的话欢迎点赞收藏,如果有问题或者意见欢迎到评论区讨论,后续会更新免密提交方法,以及pull的使用,可以点个关注不会迷路,谢谢。

 


http://www.kler.cn/a/383211.html

相关文章:

  • 【深度学习遥感分割|论文解读4】UNetFormer:一种类UNet的Transformer,用于高效的遥感城市场景图像语义分割
  • Edge浏览器打开PDF无法显示电子签章
  • 算法的基础知识
  • C++_STL_xx_番外01_关于STL的总结(常见容器的总结;关联式容器分类及特点;二叉树、二叉搜索树、AVL树(平衡二叉搜索树)、B树、红黑树)
  • 工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置
  • buu PWN5
  • Sat-NeRF论文笔记和复现问题处理
  • 小游戏开发,出现了降本增效的技术?
  • 安装acondana3, Conda command not found
  • python项目实战---使用图形化界面下载音乐
  • 离线部署k8s1.21.2集群教程
  • CrackMe破解之Acid_burn
  • SpringCloudGateway — 网关登录校验
  • Mysql基础 01 数据与sql
  • 【Python】强大的正则表达式工具:re模块详解与应用
  • 【极限编程(XP)】
  • 重新认识HTTPS
  • 【从VAE到LDM】Variational Auto Encoder原理以及关于Latent Diffusion的思考
  • 深入解析 Transformer 模型:编码器和解码器的完整实现
  • 易考八股文之谈谈对sentinel的理解和作用?
  • 关于路由笔记
  • Qt C++,Link custom data to the QCustomPlot data
  • 如何用Neo4j做知识图谱
  • yelp数据集上识别潜在的热门商家
  • 机器学习—前向传播的一般实现
  • 爬虫入门urllib 和 request(二)