Git实战005:如何正确的使用同步、获取和拉取指令
wptr33 2024-11-06 20:32 27 浏览
为了更好的管理、跟进、掌控和维护项目开发,我们通常会借用Gitlab等代码托管平台来管理项目资源。当然我们不会将项目公开在互联网上,而是在局域网搭建属于自己的Git远程仓库服务(我司搭建的是Gitlab服务)。在使用Git的使用我们经常需要对项目执行同步、获取和拉取等操作,那么我们在实际应用中该如何使用相关指令呢?
克隆资源clone
如果你是刚刚参与项目的开发那么你需要先获取当前已经开发的项目资源,这时候就需要从从远程仓库克隆资源。执行指令: git clone -b <分支名> <版本库的网址>;将指定分支克隆到本地新目录中(不指定分支则默认克隆master分支),执行git clone后会在新目录下有个.git的隐藏文件夹,所以clone下来的项目不需要进行git init初始化操作。
查看分支branch
在Git中分支一般有本地版本库分支和远程版本库分支,在项目目录中查看本地版本库分支可以执行指令:git branch,如果查看远程版本库分支可以执行指令:git branch -r,如果想同时查看本地和远程仓库的分支情况可以执行指令:git branch -al。通常本地分支显示为绿色而远程分支显示为红色,前面带符合“*”表示当前所在的分支。
同步分支
这里我们可以看到远程版本库中还有一个dev分支,而本地版本库目前只有master分支。现在我想把dev分支也取回,这个我们可以通过指令:git checkout -b <本地分支名> <origin/远程分支名>将远程仓库里的指定分支拉取到本地,并同时在本地新建了一个和指定远程分支关联的dev分支。该指令在本地仓库新建分支并自动切换到该分支,并自动建立的本地分支会和远程分支的映射关系。将本地所有分支与远程版本库保持同步 git fetch --all,拉取远程版本库所有分支 git pull --all。
?获取状态fetch
当用户向远程仓库提交更新之后我们需要去获取当前项目的最新资源,这时候我们需要知道当前资源做了哪些更新。通过指令:git fetch <远程主机名> <分支名>可以将远程版本库的特定分支更新取回,如果不指定分支则将远程主机的更新全部取回本地本地版本库。取回更新后会返回一个FETCH_HEAD 指针指向branch在服务器上的最新状态,我们可以在本地通过指令:git log -p FETCH_HEAD查看当前指针所在分支取回的更新信息。返回的信息包括更新的文件名、更新的作者和时间以及更新的内容,我们可以通过这些信息来判断是否产生冲突以确定是否将更新merge到当前分支。
?合并分支merge
fetch只是将当前项目分支在远程仓库上的最新状态取回,此时只是将状态存在了本地暂存库中并没有与本地分支进行合并,所以在本地并没有还看不到远程仓库上更新的内容。fetch可以帮助我们查看更新的内容是否与已有资源产生冲突,这样我们就可以选择分支更新进行合并。合并分支可以通过指令:git merge <远程主机名> /<分支名>将指定分支上拉取下来的最新内容合并到当前所在的分支中,如果不放心可以通过指令:git diff <分支名>来比较本地代码与刚刚从远程下载下来的代码的区别。
?拉取分支pull
如果你不需要检查远程仓库的具体更新信息时我们可以直接使用指令:git pull <远程主机名> <远程分支名>:<本地分支名>取回远程仓库指定分支的更新并与本地分支合并,如果不指定本地分支则默认拉取到本地的当前分支进行合并。git pull相当于执行git fetch后并调用git merge将检索到的分支头合并到分支中,相比起来git fetch更安全一些,虽然麻烦些(需要手动合并)但是可以在merge前查看更新情况然后再决定是否合并。
?总结
同步顾名思义就是保持本地版本库与远程版本库的信息一致,当本地有新分支而远程仓库没有、远程仓库有新分支而本地没有、本地删除了分支时远程也需要删除、远程删除了分支时本地也同时删除时就可以用同步来解决。其他的局部资源更新则可以根据实际情况来拉取,如果需要对更新进行查阅那么就先进行获取然后再手动合并分支即可。
相关推荐
- Linux文件系统操作常用命令(linux文件内容操作命令)
-
在Linux系统中,有一些常用的文件系统操作命令,以下是这些命令的介绍和作用:#切换目录,其中./代表当前目录,../代表上一级目录cd#查看当前目录里的文件和文件夹ls#...
- 别小看tail 命令,它难倒了技术总监
-
我把自己以往的文章汇总成为了Github,欢迎各位大佬star...
- lnav:基于 Linux 的高级控制台日志文件查看器
-
lnav是一款开源的控制台日志文件查看器,专为Linux和Unix-like系统设计。它通过自动检测日志文件的格式,提取时间戳、日志级别等关键信息,并将多个日志文件的内容按时间顺序合并显示,...
- 声明式与命令式代码(声明模式和命令模式)
-
编程范式中的术语和差异信不信由你,你可能已经以开发人员的身份使用了多种编程范例。因为没有什么比用编程理论招待朋友更有趣的了,所以这篇文章可以帮助您认识代码中的流行范例。命令式编程命令式编程是我们从As...
- linux中的常用命令(linux常用命令和作用)
-
linux中的常用命令linux中的命令统称shell命令shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互shell终端:我们平时输入命令,执行程序的那个...
- 提高工作效率的--Linux常用命令,能够决解95%以上的问题
-
点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf...
- 如何限制他人操作自己的电脑?(如何控制别人的电脑不让发现)
-
这段时间,小猪罗志祥正处于风口浪尖,具体是为啥?还不知道的小伙伴赶紧去补一下最近的娱乐圈八卦~简单来说,就是我们的小罗同事,以自己超强的体力,以及超强的时间管理能力,重新定义了「多人运动」的含义,重新...
- 最通俗易懂的命令模式讲解(命令模式百科)
-
我们先不讲什么是命令模式,先通过一个场景来引出命令模式,看看命令模式能解决什么样的问题。现在有一个渣男张三,他有还几个女朋友,你现在是不是还是单身狗,你就说你气不气?然后他需要每天分别叫几个女朋友起床...
- 互联网大厂后端必看!Spring Boot 中Runtime执行与停止命令?
-
你是否曾在使用SpringBoot开发项目时,遇到需要执行系统命令的场景?比如调用脚本进行文件处理,又或是启动外部程序?很多后端开发人员会使用Processexec=Runtime.get...
- Linux 常用命令(linux常用的20个命令面试)
-
日志排查类操作命令...
- Java字节码指令:if_icmpgt(0xA3)(java字节码使用的汇编语言)
-
if_icmpgt是Java字节码中的一条条件跳转指令,其全称是"IfIntegerCompareGreaterThan"。它用于比较两个整数值的大小。如果栈顶的第一个...
- 外贸干货|如何增加领英的曝光量和询盘
-
#跨境电商#...
- golang执行linux命令(golang调用shell脚本)
-
需求需要通过openssl生成rsa秘钥,然后保存该秘钥。代码实例packagemainimport("io/ioutil""bytes"&...
- LINUX磁盘挂载(linux磁盘挂载到windows)
-
1、使用root用户查看磁盘挂载情况:fdisk-l2、使用df查看当前磁盘挂载情况,根据和fdisk-l的结果进行对比,查看还有那些磁盘未使用3、挂载:mount磁盘挂载路径...
- Linux命令学习——nl命令(linux ln命令的使用)
-
nl命令主要功能为每一个文件添加行号,每一个输入的文件添加行号后发送到标准输出。当没有文件或文件为-时,读取标准输入...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)