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

git提交顺序为什么是:add,conmmit,pull,push

git提交顺序为什么是:add,conmmit,pull,push

  • 01. add,conmmit,pull,push的顺序问题
  • 02. 扩展:git上传常用的六个命令包括:add、commit、push、clone、pull、fetch。

add:将文件添加到暂存区
commit:将暂存区中的文件提交到本地仓库
pull:从远程仓库获取最新代码并合并到本地仓库
push:将本地仓库的提交推送到远程仓库

在这里插入图片描述

01. add,conmmit,pull,push的顺序问题

git 为什么要先commit,然后pull,最后再push?而不是commit然后直接push?
情况是这样的,现在远程有一个仓库,分支就一个,是master。然后我本地的仓库是从远程的master上clone下来的。大家都是clone下来,再在自己本地改好,再commit然后pull然后push,大家都是这么做的。那么现在问题来了:

1,那我本地这个也算是个分支?还是就是一个本地仓库?
答:本地和远程的关系相当于两个分支,你感觉一样是因为你git pull 的时候已经自动给绑定好对应关系了。

2,如果我在远程新建了个分支,然后我pull了下来,那我本地到底有分支这个说法吗?我本地的分支是不是就是那个远程新建的分支?
答:你远程新建了一个分支拉到本地的道理是一样的,属于复制了一份,但是本地分支和远程分支已经是两个东西了

3,本地仓库和本地分支有什么区别?
答:本地有工作区和版本库,版本库有暂存区,和分支,本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支。

4,commit是提交到本地仓库,然后push,这个push是把所有代码推到远程仓库,还是只是把commit的地方推到远程仓库?
答:肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给怼上去,如果本地分支的最新版本和远程的 commit 有冲突,就需要解决冲突,就是看那不一样,自己改,重新pull,commit操作一遍。

5,那为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?
答:这个先 commit 再 pull 最后再push 的情况就是为了应对多人合并开发的情况,

1 .commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;

2 .pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行(在两个人操作同一个分支才会冲突)那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉

3 .出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3版本,并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 ,因为A B 两人是同一分支,所以B提交会导致覆盖A的代码,因为B不知道版本变了,以为原来的文件都没变,那就直接覆盖被,B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的。(这里是说的原理,实际是你不commit根本不让你pull !!!

原文链接:https://blog.csdn.net/code_mzh/article/details/106652168

02. 扩展:git上传常用的六个命令包括:add、commit、push、clone、pull、fetch。

  1. add:将文件添加到暂存区,使用命令git add <文件名>。可以使用通配符*将所有文件添加到暂存区,命令为git add .。add命令是Git中的重要步骤,将文件添加到暂存区后,才能进行commit操作。

  2. commit:将暂存区中的文件提交到本地仓库,使用命令git commit -m “提交说明”。commit命令需要添加一个提交说明,以便标识此次提交的目的和内容。

  3. push:将本地仓库的提交推送到远程仓库,使用命令git push <远程仓库名> <分支名>。远程仓库名一般是指远程仓库的URL,可以是origin等别名;分支名是指要推送的本地分支名。

  4. clone:克隆远程仓库到本地,使用命令git clone <远程仓库URL>。clone命令是获取远程仓库的一份完整拷贝,并在本地创建一个与远程仓库相同的仓库。

  5. pull:从远程仓库获取最新代码并合并到本地仓库,使用命令git pull <远程仓库名> <分支名>。pull命令相当于fetch和merge两个操作的合并,先从远程仓库获取最新代码,然后将其合并到当前分支。

  6. fetch:从远程仓库获取最新代码,使用命令git fetch <远程仓库名>。fetch命令将远程仓库的最新代码下载到本地,但并不合并到当前分支,需要使用合并命令进行合并。

以上六个命令是Git中上传常用的命令,通过它们可以完成代码的添加、提交、推送、克隆等操作。

原文链接:https://worktile.com/kb/ask/259572.html


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

相关文章:

  • D62【python 接口自动化学习】- python基础之数据库
  • 十、快速入门go语言之方法
  • JavaScript 实现文本转语音功能
  • 如何对接低价折扣相对稳定电影票渠道?
  • 一个小程序如何对接多个收款账户?
  • Android View事件分发
  • 02_ElementUI
  • PDF模板制作与填充(Java)
  • 高级SQL技巧:提升数据库性能与查询效率
  • 【每日一题】2015考研数据结构 - 求不重复的链表元素
  • 使用PEFT在多个AMD GPU上进行StarCoder的指令微调
  • 【部署glm4】属性找不到、参数错误问题解决(思路:修改模型包版本)
  • vue之组件网站(后续补)
  • Java基础Day-Fourteen
  • [产品管理-59]:项目组合中产品或项目的类型分类
  • 【电机控制器】STC8H1K芯片——UART串口通信
  • 【K8S系列】K8S 集群 CPU 爆满导致 Pod Pending 状态的分析与解决方案
  • MySQL 到 ClickHouse 数据同步优化(三)
  • Redis3:Hash类型、List类型、Set类型、SortedSet类型
  • Am I Isolated:一款安全态势基准测试工具
  • 【数据集】【YOLO】【目标检测】摔跤识别数据集 5097 张,YOLO行人摔倒识别算法实战训练教程!
  • 自动打电话机器人,好用吗?
  • Trimble X12三维激光扫描仪正在改变游戏规则【上海沪敖3D】
  • UE4/5 编译报错 MSB3073
  • 【Python图像处理】进阶实战指南
  • Spark集群模式搭建之Yarn模式